Search in sources :

Example 26 with RLPElement

use of org.ethereum.util.RLPElement in project rskj by rsksmart.

the class RLPTest method encodeDecodeSingleBytesWithHighValue.

@Test
public void encodeDecodeSingleBytesWithHighValue() {
    for (int k = 128; k < 256; k++) {
        byte[] bytes = new byte[1];
        bytes[0] = (byte) k;
        byte[] encoded = RLP.encodeElement(bytes);
        Assert.assertNotNull(encoded);
        Assert.assertEquals(2, encoded.length);
        Assert.assertEquals((byte) 129, encoded[0]);
        RLPElement element = RLP.decode2OneItem(encoded, 0);
        Assert.assertNotNull(element);
        byte[] decoded = element.getRLPData();
        Assert.assertNotNull(decoded);
        Assert.assertArrayEquals(bytes, decoded);
    }
}
Also used : RLPElement(org.ethereum.util.RLPElement) Test(org.junit.Test)

Example 27 with RLPElement

use of org.ethereum.util.RLPElement in project rskj by rsksmart.

the class RLPTest method encodeDecodeShortListWithTwoByteArrays.

@Test
public void encodeDecodeShortListWithTwoByteArrays() {
    byte[] value1 = new byte[] { 0x01, 0x02 };
    byte[] value2 = new byte[] { 0x03, 0x04 };
    byte[] element1 = RLP.encodeElement(value1);
    byte[] element2 = RLP.encodeElement(value2);
    byte[] encoded = RLP.encodeList(element1, element2);
    Assert.assertNotNull(encoded);
    Assert.assertEquals(1 + 3 + 3, encoded.length);
    Assert.assertEquals((byte) (192 + 3 + 3), encoded[0]);
    ArrayList<RLPElement> list = RLP.decode2(encoded);
    Assert.assertNotNull(list);
    Assert.assertEquals(1, list.size());
    RLPList list2 = (RLPList) list.get(0);
    Assert.assertNotNull(list2);
    Assert.assertEquals(2, list2.size());
    Assert.assertArrayEquals(value1, list2.get(0).getRLPData());
    Assert.assertArrayEquals(value2, list2.get(1).getRLPData());
}
Also used : RLPElement(org.ethereum.util.RLPElement) RLPList(org.ethereum.util.RLPList) Test(org.junit.Test)

Example 28 with RLPElement

use of org.ethereum.util.RLPElement in project rskj by rsksmart.

the class RLPTest method encodeDecodeLongByteArrayWithThreeBytesLengthBorderCase.

@Test
public void encodeDecodeLongByteArrayWithThreeBytesLengthBorderCase() {
    byte[] bytes = new byte[256 * 256 * 256 - 1];
    byte[] encoded = RLP.encodeElement(bytes);
    Assert.assertNotNull(encoded);
    Assert.assertEquals(4 + 256 * 256 * 256 - 1, encoded.length);
    Assert.assertEquals((byte) (183 + 3), encoded[0]);
    Assert.assertEquals((byte) 0xff, encoded[1]);
    Assert.assertEquals((byte) 0xff, encoded[2]);
    Assert.assertEquals((byte) 0xff, encoded[3]);
    RLPElement element = RLP.decode2OneItem(encoded, 0);
    Assert.assertNotNull(element);
    byte[] decoded = element.getRLPData();
    Assert.assertNotNull(decoded);
    Assert.assertArrayEquals(bytes, decoded);
}
Also used : RLPElement(org.ethereum.util.RLPElement) Test(org.junit.Test)

Example 29 with RLPElement

use of org.ethereum.util.RLPElement in project rskj by rsksmart.

the class RLPTest method encodeDecodeLongByteArrayWithFourBytesLength.

@Test
public void encodeDecodeLongByteArrayWithFourBytesLength() {
    byte[] bytes = new byte[256 * 256 * 256];
    byte[] encoded = RLP.encodeElement(bytes);
    Assert.assertNotNull(encoded);
    Assert.assertEquals(5 + 256 * 256 * 256, encoded.length);
    Assert.assertEquals((byte) (183 + 4), encoded[0]);
    Assert.assertEquals((byte) 0x01, encoded[1]);
    Assert.assertEquals((byte) 0x00, encoded[2]);
    Assert.assertEquals((byte) 0x00, encoded[3]);
    Assert.assertEquals((byte) 0x00, encoded[4]);
    RLPElement element = RLP.decode2OneItem(encoded, 0);
    Assert.assertNotNull(element);
    byte[] decoded = element.getRLPData();
    Assert.assertNotNull(decoded);
    Assert.assertArrayEquals(bytes, decoded);
}
Also used : RLPElement(org.ethereum.util.RLPElement) Test(org.junit.Test)

Example 30 with RLPElement

use of org.ethereum.util.RLPElement in project rskj by rsksmart.

the class RLPTest method encodeDecodeShortByteArrays.

@Test
public void encodeDecodeShortByteArrays() {
    for (int k = 2; k < 56; k++) {
        byte[] bytes = new byte[k];
        byte[] encoded = RLP.encodeElement(bytes);
        Assert.assertNotNull(encoded);
        Assert.assertEquals(1 + k, encoded.length);
        Assert.assertEquals((byte) (128 + k), encoded[0]);
        RLPElement element = RLP.decode2OneItem(encoded, 0);
        Assert.assertNotNull(element);
        byte[] decoded = element.getRLPData();
        Assert.assertNotNull(decoded);
        Assert.assertArrayEquals(bytes, decoded);
    }
}
Also used : RLPElement(org.ethereum.util.RLPElement) Test(org.junit.Test)

Aggregations

RLPElement (org.ethereum.util.RLPElement)38 Test (org.junit.Test)29 RLPList (org.ethereum.util.RLPList)19 ArrayList (java.util.ArrayList)4 LogInfo (org.ethereum.vm.LogInfo)3 Coin (co.rsk.core.Coin)2 RskAddress (co.rsk.core.RskAddress)2 Keccak256 (co.rsk.crypto.Keccak256)2 CopyOnWriteArrayList (java.util.concurrent.CopyOnWriteArrayList)2 Script (co.rsk.bitcoinj.script.Script)1 ScriptChunk (co.rsk.bitcoinj.script.ScriptChunk)1 BridgeConstants (co.rsk.config.BridgeConstants)1 RepositoryImpl (co.rsk.db.RepositoryImpl)1 Federation (co.rsk.peg.Federation)1 BridgeEventLogger (co.rsk.peg.utils.BridgeEventLogger)1 BridgeEventLoggerImpl (co.rsk.peg.utils.BridgeEventLoggerImpl)1 RemascTransaction (co.rsk.remasc.RemascTransaction)1 LinkedList (java.util.LinkedList)1 Block (org.ethereum.core.Block)1 ImmutableTransaction (org.ethereum.core.ImmutableTransaction)1