aboutsummaryrefslogtreecommitdiffstats
path: root/src/ajax/script.js
Commit message (Expand)AuthorAgeFilesLines
* Core: Use named exports in `src/`Michał Gołębiowski-Owczarek2023-09-121-2/+2
* Ajax: Support `headers` for script transport even when cross-domainMichał Gołębiowski-Owczarek2023-02-011-10/+18
* Ajax: Don't auto-execute scripts unless dataType providedMichał Gołębiowski-Owczarek2021-01-261-11/+2
* Ajax: Make responseJSON work for erroneous same-domain JSONP requestsMichał Gołębiowski-Owczarek2020-09-011-5/+18
* Ajax: Avoid CSP errors in the script transport for async requestsMichał Gołębiowski-Owczarek2020-08-251-3/+7
* Core: Migrate from AMD to ES modules 🎉Michał Gołębiowski-Owczarek2019-11-181-8/+3
* squash! Set attributes all at once, src lastDave Methvin2018-05-141-8/+5
* Ajax: Allow custom attributes when script transport is usedDave Methvin2018-05-141-3/+3
* Build: Put all AMD modules in "src/" in strict modeMichał Gołębiowski2016-04-251-0/+2
* Ajax: improve content-type detectionOleg Gaidarenko2015-10-121-1/+1
* Ajax: correct indentationOleg Gaidarenko2015-10-121-3/+3
* Ajax: Mitigate possible XSS vulnerabilityOleg Gaidarenko2015-10-121-0/+7
* Build: Update jscs and lint filesOleg Gaidarenko2015-09-071-8/+9
* Core: Align branches: remove an unused variable, add commentsMichał Gołębiowski2015-04-271-0/+2
* Ajax: simplify one ajax call and add explanatory commentOleg Gaidarenko2015-02-151-1/+0
* Build: Don't assume the browser environment; smoke test on Node w/ jsdomMichał Gołębiowski2014-12-261-1/+2
* Build: update grunt-jscs-checker and pass with the new rulesTimmy Willison2014-07-171-1/+2
* AMD-ify jQuery sourcegit s! Woo! Fixes #14113, #14163.Timmy Willison2013-08-151-0/+7
* Removes unnecessary call to `.off()` as noted by @dcherman.jaubourg2013-01-211-1/+1
* Further script transport cleanup, close gh-1123.jaubourg2013-01-201-19/+16
* Reduced script transportjaubourg2013-01-201-47/+21
* No ticket: compress ajax. Close gh-1041.Richard Gibson2012-11-251-9/+10
* Set async to true instead of async (prop vs. attr). Closes gh-1039Timo Tijhof2012-11-211-1/+1
* Strips IIFEs from modules; Always require built jQuery for tests.Rick Waldron2012-06-041-4/+0
* Applies exception in Style Guidelines regarding objects and functions when th...jaubourg2011-04-081-2/+2
* Fixes #8744. Makes sure script transport abort method actually removes the sc...jaubourg2011-04-041-1/+1
* Fixes #8098. Use the fast document.head when available. Don't set unneeded "s...Mathias Bynens2011-02-021-1/+1
* Script dataType now supports ecmascript mimetypes.jaubourg2011-01-311-2/+2
* Fixes #8082. Text to script converter now returns text. Unit test added.jaubourg2011-01-291-1/+4
* More code style fixes.jaubourg2011-01-231-1/+1
* Apply JQuery Core Style Guidelines to ajax.js and ajax/*.js,jaubourg2011-01-231-17/+12
* Cleans up and simplifies code shared by ajaxPrefilter and ajaxTransport. Remo...jaubourg2011-01-201-2/+4
* The script prefilter now forces cross-domain requests type to GET.jaubourg2011-01-161-0/+1
* Fixes #2994. Not finding a transport now fires the error callbacks and doesn'...jaubourg2011-01-161-6/+10
* Moved jQuery.ajax.prefilter and jQuery.ajax.transport to jQuery.ajaxPrefilter...jaubourg2011-01-131-2/+1
* Reworked script and xhr abort logic to take advantage of the fact jXHR.abort ...jaubourg2011-01-131-5/+8
* Script transport now uses ajaxSetup to define script dataType.jaubourg2011-01-121-3/+3
* Renamed src/transports to src/ajax (in case we need prefilters in the future ...jaubourg2011-01-061-0/+82
3'>123 124 125 126 127 128 129
/* ====================================================================
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
==================================================================== */

package org.apache.poi.util;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;

import java.io.ByteArrayInputStream;
import java.io.IOException;

import org.junit.jupiter.api.Test;

/**
 * Test ShortField code
 */
final class TestShortField {

    private static final short[] _test_array = {Short.MIN_VALUE, -1, 0, 1, Short.MAX_VALUE};

    @Test
    void testConstructors() {
        assertThrows(ArrayIndexOutOfBoundsException.class, () -> new ShortField(-1));
        ShortField field = new ShortField(2);

        assertEquals(0, field.get());
        assertThrows(ArrayIndexOutOfBoundsException.class, () -> new ShortField(-1, ( short ) 1));
        field = new ShortField(2, ( short ) 0x1234);
        assertEquals(0x1234, field.get());

        assertThrows(ArrayIndexOutOfBoundsException.class, () -> new ShortField(-1, ( short ) 1, new byte[ 4 ]));

        byte[] array = new byte[ 4 ];
        field = new ShortField(2, ( short ) 0x1234, array);
        assertEquals(( short ) 0x1234, field.get());
        assertEquals(( byte ) 0x34, array[ 2 ]);
        assertEquals(( byte ) 0x12, array[ 3 ]);

        assertThrows(ArrayIndexOutOfBoundsException.class, () -> new ShortField(2, ( short ) 5, new byte[ 3 ]));

        for (short element : _test_array) {
            array = new byte[ 2 ];
            new ShortField(0, element, array);
            assertEquals(element, new ShortField(0, array).get());
        }
    }

    @Test
    void testSet() {
        ShortField field = new ShortField(0);
        byte[]     array = new byte[ 2 ];

        for (int j = 0; j < _test_array.length; j++) {
            field.set(_test_array[ j ]);
            assertEquals(_test_array[ j ], field.get(), "testing _1 " + j);
            field = new ShortField(0);
            field.set(_test_array[ j ], array);
            assertEquals(_test_array[ j ], field.get(), "testing _2 ");
            assertEquals(( byte ) (_test_array[ j ] % 256), array[ 0 ], "testing _3.0 " + _test_array[ j ]);
            assertEquals(( byte ) ((_test_array[ j ] >> 8) % 256), array[ 1 ], "testing _3.1 " + _test_array[ j ]);
        }
    }

    @Test
    void testReadFromBytes() {
        ShortField field1 = new ShortField(1);
        byte[]     array = new byte[ 2 ];

        assertThrows(ArrayIndexOutOfBoundsException.class, () -> field1.readFromBytes(array));

        ShortField field2 = new ShortField(0);
        for (int j = 0; j < _test_array.length; j++)
        {
            array[ 0 ] = ( byte ) (_test_array[ j ] % 256);
            array[ 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
            field2.readFromBytes(array);
            assertEquals(_test_array[ j ], field2.get(), "testing " + j);
        }
    }

    @Test
    void testReadFromStream() throws IOException {
        ShortField field  = new ShortField(0);
        byte[]     buffer = new byte[ _test_array.length * 2 ];

        for (int j = 0; j < _test_array.length; j++)
        {
            buffer[ (j * 2)     ] = ( byte ) (_test_array[ j ]        % 256);
            buffer[ (j * 2) + 1 ] = ( byte ) ((_test_array[ j ] >> 8) % 256);
        }
        ByteArrayInputStream stream = new ByteArrayInputStream(buffer);

        for (int j = 0; j < buffer.length / 2; j++)
        {
            field.readFromStream(stream);
            assertEquals(_test_array[ j ], field.get(), "Testing " + j);
        }
    }

    @Test
    void testWriteToBytes() {
        ShortField field = new ShortField(0);
        byte[]     array = new byte[ 2 ];

        for (short element : _test_array) {
            field.set(element);
            field.writeToBytes(array);
            short val = ( short ) (array[ 1 ] << 8);

            val &= ( short ) 0xFF00;
            val += ( short ) (array[ 0 ] & 0x00FF);
            assertEquals(element, val, "testing ");
        }
    }
}