Hex Artifact Content
Not logged in

Artifact 828a77322a8d36653459588999eec27006536500:


0000: 70 61 63 6b 61 67 65 20 6f 72 67 2e 69 6e 74 65  package org.inte
0010: 72 6c 65 64 67 65 72 2e 63 6f 64 65 63 73 2e 6f  rledger.codecs.o
0020: 65 72 3b 0a 0a 69 6d 70 6f 72 74 20 73 74 61 74  er;..import stat
0030: 69 63 20 6f 72 67 2e 68 61 6d 63 72 65 73 74 2e  ic org.hamcrest.
0040: 43 6f 72 65 4d 61 74 63 68 65 72 73 2e 69 73 3b  CoreMatchers.is;
0050: 0a 69 6d 70 6f 72 74 20 73 74 61 74 69 63 20 6f  .import static o
0060: 72 67 2e 68 61 6d 63 72 65 73 74 2e 4d 61 74 63  rg.hamcrest.Matc
0070: 68 65 72 41 73 73 65 72 74 2e 61 73 73 65 72 74  herAssert.assert
0080: 54 68 61 74 3b 0a 69 6d 70 6f 72 74 20 73 74 61  That;.import sta
0090: 74 69 63 20 6f 72 67 2e 6a 75 6e 69 74 2e 41 73  tic org.junit.As
00a0: 73 65 72 74 2e 61 73 73 65 72 74 41 72 72 61 79  sert.assertArray
00b0: 45 71 75 61 6c 73 3b 0a 0a 69 6d 70 6f 72 74 20  Equals;..import 
00c0: 6f 72 67 2e 69 6e 74 65 72 6c 65 64 67 65 72 2e  org.interledger.
00d0: 63 6f 64 65 63 73 2e 43 6f 64 65 63 43 6f 6e 74  codecs.CodecCont
00e0: 65 78 74 3b 0a 69 6d 70 6f 72 74 20 6f 72 67 2e  ext;.import org.
00f0: 69 6e 74 65 72 6c 65 64 67 65 72 2e 63 6f 64 65  interledger.code
0100: 63 73 2e 6f 65 72 2e 4f 65 72 4c 65 6e 67 74 68  cs.oer.OerLength
0110: 50 72 65 66 69 78 43 6f 64 65 63 2e 4f 65 72 4c  PrefixCodec.OerL
0120: 65 6e 67 74 68 50 72 65 66 69 78 3b 0a 69 6d 70  engthPrefix;.imp
0130: 6f 72 74 20 6f 72 67 2e 69 6e 74 65 72 6c 65 64  ort org.interled
0140: 67 65 72 2e 63 6f 64 65 63 73 2e 6f 65 72 2e 4f  ger.codecs.oer.O
0150: 65 72 4f 63 74 65 74 53 74 72 69 6e 67 43 6f 64  erOctetStringCod
0160: 65 63 2e 4f 65 72 4f 63 74 65 74 53 74 72 69 6e  ec.OerOctetStrin
0170: 67 3b 0a 0a 69 6d 70 6f 72 74 20 63 6f 6d 2e 67  g;..import com.g
0180: 6f 6f 67 6c 65 2e 63 6f 6d 6d 6f 6e 2e 69 6f 2e  oogle.common.io.
0190: 42 61 73 65 45 6e 63 6f 64 69 6e 67 3b 0a 69 6d  BaseEncoding;.im
01a0: 70 6f 72 74 20 6f 72 67 2e 6a 75 6e 69 74 2e 42  port org.junit.B
01b0: 65 66 6f 72 65 3b 0a 69 6d 70 6f 72 74 20 6f 72  efore;.import or
01c0: 67 2e 6a 75 6e 69 74 2e 54 65 73 74 3b 0a 69 6d  g.junit.Test;.im
01d0: 70 6f 72 74 20 6f 72 67 2e 6a 75 6e 69 74 2e 72  port org.junit.r
01e0: 75 6e 6e 65 72 2e 52 75 6e 57 69 74 68 3b 0a 69  unner.RunWith;.i
01f0: 6d 70 6f 72 74 20 6f 72 67 2e 6a 75 6e 69 74 2e  mport org.junit.
0200: 72 75 6e 6e 65 72 73 2e 50 61 72 61 6d 65 74 65  runners.Paramete
0210: 72 69 7a 65 64 3b 0a 69 6d 70 6f 72 74 20 6f 72  rized;.import or
0220: 67 2e 6a 75 6e 69 74 2e 72 75 6e 6e 65 72 73 2e  g.junit.runners.
0230: 50 61 72 61 6d 65 74 65 72 69 7a 65 64 2e 50 61  Parameterized.Pa
0240: 72 61 6d 65 74 65 72 73 3b 0a 0a 69 6d 70 6f 72  rameters;..impor
0250: 74 20 6a 61 76 61 2e 69 6f 2e 42 79 74 65 41 72  t java.io.ByteAr
0260: 72 61 79 49 6e 70 75 74 53 74 72 65 61 6d 3b 0a  rayInputStream;.
0270: 69 6d 70 6f 72 74 20 6a 61 76 61 2e 69 6f 2e 42  import java.io.B
0280: 79 74 65 41 72 72 61 79 4f 75 74 70 75 74 53 74  yteArrayOutputSt
0290: 72 65 61 6d 3b 0a 69 6d 70 6f 72 74 20 6a 61 76  ream;.import jav
02a0: 61 2e 75 74 69 6c 2e 41 72 72 61 79 73 3b 0a 69  a.util.Arrays;.i
02b0: 6d 70 6f 72 74 20 6a 61 76 61 2e 75 74 69 6c 2e  mport java.util.
02c0: 43 6f 6c 6c 65 63 74 69 6f 6e 3b 0a 0a 2f 2a 2a  Collection;../**
02d0: 0a 20 2a 20 50 61 72 61 6d 65 74 65 72 69 7a 65  . * Parameterize
02e0: 64 20 75 6e 69 74 20 74 65 73 74 73 20 66 6f 72  d unit tests for
02f0: 20 65 6e 63 6f 64 69 6e 67 20 61 6e 20 69 6e 73   encoding an ins
0300: 74 61 6e 63 65 20 6f 66 20 7b 40 6c 69 6e 6b 20  tance of {@link 
0310: 4f 65 72 4f 63 74 65 74 53 74 72 69 6e 67 43 6f  OerOctetStringCo
0320: 64 65 63 7d 2e 0a 20 2a 2f 0a 40 52 75 6e 57 69  dec}.. */.@RunWi
0330: 74 68 28 50 61 72 61 6d 65 74 65 72 69 7a 65 64  th(Parameterized
0340: 2e 63 6c 61 73 73 29 0a 70 75 62 6c 69 63 20 63  .class).public c
0350: 6c 61 73 73 20 4f 65 72 4f 63 74 65 74 53 74 72  lass OerOctetStr
0360: 69 6e 67 43 6f 64 65 63 54 65 73 74 20 7b 0a 0a  ingCodecTest {..
0370: 20 20 70 72 69 76 61 74 65 20 43 6f 64 65 63 43    private CodecC
0380: 6f 6e 74 65 78 74 20 63 6f 64 65 63 43 6f 6e 74  ontext codecCont
0390: 65 78 74 3b 0a 20 20 70 72 69 76 61 74 65 20 4f  ext;.  private O
03a0: 65 72 4f 63 74 65 74 53 74 72 69 6e 67 43 6f 64  erOctetStringCod
03b0: 65 63 20 6f 65 72 4f 63 74 65 74 53 74 72 69 6e  ec oerOctetStrin
03c0: 67 43 6f 64 65 63 3b 0a 20 20 70 72 69 76 61 74  gCodec;.  privat
03d0: 65 20 66 69 6e 61 6c 20 62 79 74 65 5b 5d 20 61  e final byte[] a
03e0: 73 6e 31 42 79 74 65 56 61 6c 75 65 3b 0a 20 20  sn1ByteValue;.  
03f0: 70 72 69 76 61 74 65 20 66 69 6e 61 6c 20 62 79  private final by
0400: 74 65 5b 5d 20 6f 63 74 65 74 42 79 74 65 73 3b  te[] octetBytes;
0410: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 43 6f 6e  ..  /**.   * Con
0420: 73 74 72 75 63 74 20 61 6e 20 69 6e 73 74 61 6e  struct an instan
0430: 63 65 20 6f 66 20 74 68 69 73 20 70 61 72 61 6d  ce of this param
0440: 65 74 65 72 69 7a 65 64 20 74 65 73 74 20 77 69  eterized test wi
0450: 74 68 20 74 68 65 20 73 75 70 70 6c 69 65 64 20  th the supplied 
0460: 69 6e 70 75 74 73 2e 0a 20 20 20 2a 0a 20 20 20  inputs..   *.   
0470: 2a 20 40 70 61 72 61 6d 20 61 73 6e 31 42 79 74  * @param asn1Byt
0480: 65 73 20 20 41 20 62 79 74 65 20 61 72 72 61 79  es  A byte array
0490: 20 72 65 70 72 65 73 65 6e 74 69 6e 67 20 6f 63   representing oc
04a0: 74 65 74 73 20 74 6f 20 62 65 20 65 6e 63 6f 64  tets to be encod
04b0: 65 64 2e 0a 20 20 20 2a 20 40 70 61 72 61 6d 20  ed..   * @param 
04c0: 6f 63 74 65 74 42 79 74 65 73 20 54 68 65 20 65  octetBytes The e
04d0: 78 70 65 63 74 65 64 20 76 61 6c 75 65 2c 20 69  xpected value, i
04e0: 6e 20 62 69 6e 61 72 79 2c 20 6f 66 20 74 68 65  n binary, of the
04f0: 20 73 75 70 70 6c 69 65 64 20 7b 40 63 6f 64 65   supplied {@code
0500: 20 61 73 6e 31 42 79 74 65 73 7d 2e 0a 20 20 20   asn1Bytes}..   
0510: 2a 2f 0a 20 20 70 75 62 6c 69 63 20 4f 65 72 4f  */.  public OerO
0520: 63 74 65 74 53 74 72 69 6e 67 43 6f 64 65 63 54  ctetStringCodecT
0530: 65 73 74 28 66 69 6e 61 6c 20 62 79 74 65 5b 5d  est(final byte[]
0540: 20 61 73 6e 31 42 79 74 65 73 2c 20 66 69 6e 61   asn1Bytes, fina
0550: 6c 20 62 79 74 65 5b 5d 20 6f 63 74 65 74 42 79  l byte[] octetBy
0560: 74 65 73 29 20 7b 0a 20 20 20 20 74 68 69 73 2e  tes) {.    this.
0570: 61 73 6e 31 42 79 74 65 56 61 6c 75 65 20 3d 20  asn1ByteValue = 
0580: 61 73 6e 31 42 79 74 65 73 3b 0a 20 20 20 20 74  asn1Bytes;.    t
0590: 68 69 73 2e 6f 63 74 65 74 42 79 74 65 73 20 3d  his.octetBytes =
05a0: 20 6f 63 74 65 74 42 79 74 65 73 3b 0a 20 20 7d   octetBytes;.  }
05b0: 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54 68 65  ..  /**.   * The
05c0: 20 64 61 74 61 20 66 6f 72 20 74 68 69 73 20 74   data for this t
05d0: 65 73 74 2e 2e 2e 0a 20 20 20 2a 2f 0a 20 20 40  est....   */.  @
05e0: 50 61 72 61 6d 65 74 65 72 73 0a 20 20 70 75 62  Parameters.  pub
05f0: 6c 69 63 20 73 74 61 74 69 63 20 43 6f 6c 6c 65  lic static Colle
0600: 63 74 69 6f 6e 3c 4f 62 6a 65 63 74 5b 5d 3e 20  ction<Object[]> 
0610: 64 61 74 61 28 29 20 7b 0a 20 20 20 20 72 65 74  data() {.    ret
0620: 75 72 6e 20 41 72 72 61 79 73 2e 61 73 4c 69 73  urn Arrays.asLis
0630: 74 28 6e 65 77 20 4f 62 6a 65 63 74 5b 5d 5b 5d  t(new Object[][]
0640: 7b 0a 20 20 20 20 20 20 20 20 2f 2f 20 5b 61 73  {.        // [as
0650: 6e 31 5f 62 79 74 65 73 5d 5b 6f 63 74 65 74 5f  n1_bytes][octet_
0660: 62 79 74 65 73 5d 0a 20 20 20 20 20 20 20 20 2f  bytes].        /
0670: 2f 20 30 0a 20 20 20 20 20 20 20 20 7b 42 61 73  / 0.        {Bas
0680: 65 45 6e 63 6f 64 69 6e 67 2e 62 61 73 65 31 36  eEncoding.base16
0690: 28 29 2e 64 65 63 6f 64 65 28 22 30 30 22 29 2c  ().decode("00"),
06a0: 20 22 22 2e 67 65 74 42 79 74 65 73 28 29 7d 2c   "".getBytes()},
06b0: 0a 20 20 20 20 20 20 20 20 2f 2f 20 31 0a 20 20  .        // 1.  
06c0: 20 20 20 20 20 20 7b 42 61 73 65 45 6e 63 6f 64        {BaseEncod
06d0: 69 6e 67 2e 62 61 73 65 31 36 28 29 2e 64 65 63  ing.base16().dec
06e0: 6f 64 65 28 22 30 31 30 31 22 29 2c 20 42 61 73  ode("0101"), Bas
06f0: 65 45 6e 63 6f 64 69 6e 67 2e 62 61 73 65 31 36  eEncoding.base16
0700: 28 29 2e 64 65 63 6f 64 65 28 22 30 31 22 29 7d  ().decode("01")}
0710: 2c 0a 20 20 20 20 20 20 20 20 2f 2f 20 32 0a 20  ,.        // 2. 
0720: 20 20 20 20 20 20 20 7b 42 61 73 65 45 6e 63 6f         {BaseEnco
0730: 64 69 6e 67 2e 62 61 73 65 31 36 28 29 2e 64 65  ding.base16().de
0740: 63 6f 64 65 28 22 30 33 36 31 36 32 36 33 22 29  code("03616263")
0750: 2c 20 22 61 62 63 22 2e 67 65 74 42 79 74 65 73  , "abc".getBytes
0760: 28 29 7d 2c 0a 20 20 20 20 20 20 20 20 2f 2f 20  ()},.        // 
0770: 33 0a 20 20 20 20 20 20 20 20 7b 42 61 73 65 45  3.        {BaseE
0780: 6e 63 6f 64 69 6e 67 2e 62 61 73 65 31 36 28 29  ncoding.base16()
0790: 2e 64 65 63 6f 64 65 28 22 30 42 36 38 36 35 36  .decode("0B68656
07a0: 43 36 43 36 46 32 30 37 37 36 46 37 32 36 43 36  C6C6F20776F726C6
07b0: 34 22 29 2c 20 22 68 65 6c 6c 6f 20 77 6f 72 6c  4"), "hello worl
07c0: 64 22 2e 67 65 74 42 79 74 65 73 28 29 7d 2c 0a  d".getBytes()},.
07d0: 20 20 20 20 20 20 20 20 2f 2f 20 34 0a 20 20 20          // 4.   
07e0: 20 20 20 20 20 7b 42 61 73 65 45 6e 63 6f 64 69       {BaseEncodi
07f0: 6e 67 2e 62 61 73 65 31 36 28 29 2e 64 65 63 6f  ng.base16().deco
0800: 64 65 28 22 30 41 36 37 32 45 37 34 36 35 37 33  de("0A672E746573
0810: 37 34 32 45 36 36 36 46 36 46 22 29 2c 20 22 67  742E666F6F"), "g
0820: 2e 74 65 73 74 2e 66 6f 6f 22 2e 67 65 74 42 79  .test.foo".getBy
0830: 74 65 73 28 29 7d 2c 0a 20 20 20 20 20 20 20 20  tes()},.        
0840: 2f 2f 20 35 0a 20 20 20 20 20 20 20 20 7b 42 61  // 5.        {Ba
0850: 73 65 45 6e 63 6f 64 69 6e 67 2e 62 61 73 65 31  seEncoding.base1
0860: 36 28 29 0a 20 20 20 20 20 20 20 20 20 20 20 20  6().            
0870: 2e 64 65 63 6f 64 65 28 22 38 32 30 33 46 46 36  .decode("8203FF6
0880: 37 32 45 37 34 36 35 37 33 37 34 32 45 33 31 33  72E746573742E313
0890: 30 33 32 33 34 32 45 34 31 34 31 34 31 34 31 34  032342E414141414
08a0: 31 34 31 34 31 34 31 34 31 34 22 0a 20 20 20 20  1414141414".    
08b0: 20 20 20 20 20 20 20 20 2b 20 22 31 34 31 34 31          + "14141
08c0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
08d0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
08e0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
08f0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0900: 34 31 34 31 22 0a 20 20 20 20 20 20 20 20 20 20  4141".          
0910: 20 20 2b 20 22 34 31 34 31 34 31 34 31 34 31 34    + "41414141414
0920: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0930: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0940: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0950: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 22 0a  14141414141414".
0960: 20 20 20 20 20 20 20 20 20 20 20 20 2b 20 22 31              + "1
0970: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0980: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0990: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
09a0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
09b0: 34 31 34 31 34 31 34 31 22 0a 20 20 20 20 20 20  41414141".      
09c0: 20 20 20 20 20 20 2b 20 22 34 31 34 31 34 31 34        + "4141414
09d0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
09e0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
09f0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0a00: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0a10: 31 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  14".            
0a20: 2b 20 22 31 34 31 34 31 34 31 34 31 34 31 34 31  + "1414141414141
0a30: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0a40: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0a50: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0a60: 34 31 34 31 34 31 34 31 34 31 34 31 22 0a 20 20  414141414141".  
0a70: 20 20 20 20 20 20 20 20 20 20 2b 20 22 34 31 34            + "414
0a80: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0a90: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0aa0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0ab0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0ac0: 31 34 31 34 31 34 22 0a 20 20 20 20 20 20 20 20  141414".        
0ad0: 20 20 20 20 2b 20 22 31 34 31 34 31 34 31 34 31      + "141414141
0ae0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0af0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0b00: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0b10: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0b20: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 2b 20  ".            + 
0b30: 22 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  "414141414141414
0b40: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0b50: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0b60: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0b70: 31 34 31 34 31 34 31 34 31 34 22 0a 20 20 20 20  1414141414".    
0b80: 20 20 20 20 20 20 20 20 2b 20 22 31 34 31 34 31          + "14141
0b90: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0ba0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0bb0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0bc0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0bd0: 34 31 34 31 22 0a 20 20 20 20 20 20 20 20 20 20  4141".          
0be0: 20 20 2b 20 22 34 31 34 31 34 31 34 31 34 31 34    + "41414141414
0bf0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0c00: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0c10: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0c20: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 22 0a  14141414141414".
0c30: 20 20 20 20 20 20 20 20 20 20 20 20 2b 20 22 31              + "1
0c40: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0c50: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0c60: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0c70: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0c80: 34 31 34 31 34 31 34 31 22 0a 20 20 20 20 20 20  41414141".      
0c90: 20 20 20 20 20 20 2b 20 22 34 31 34 31 34 31 34        + "4141414
0ca0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0cb0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0cc0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0cd0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0ce0: 31 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  14".            
0cf0: 2b 20 22 31 34 31 34 31 34 31 34 31 34 31 34 31  + "1414141414141
0d00: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0d10: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0d20: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0d30: 34 31 34 31 34 31 34 31 34 31 34 31 22 0a 20 20  414141414141".  
0d40: 20 20 20 20 20 20 20 20 20 20 2b 20 22 34 31 34            + "414
0d50: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0d60: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0d70: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0d80: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0d90: 31 34 31 34 31 34 22 0a 20 20 20 20 20 20 20 20  141414".        
0da0: 20 20 20 20 2b 20 22 31 34 31 34 31 34 31 34 31      + "141414141
0db0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0dc0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0dd0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0de0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0df0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 2b 20  ".            + 
0e00: 22 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  "414141414141414
0e10: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0e20: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0e30: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0e40: 31 34 31 34 31 34 31 34 31 34 22 0a 20 20 20 20  1414141414".    
0e50: 20 20 20 20 20 20 20 20 2b 20 22 31 34 31 34 31          + "14141
0e60: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0e70: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0e80: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0e90: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0ea0: 34 31 34 31 22 0a 20 20 20 20 20 20 20 20 20 20  4141".          
0eb0: 20 20 2b 20 22 34 31 34 31 34 31 34 31 34 31 34    + "41414141414
0ec0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0ed0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0ee0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0ef0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 22 0a  14141414141414".
0f00: 20 20 20 20 20 20 20 20 20 20 20 20 2b 20 22 31              + "1
0f10: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0f20: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0f30: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0f40: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0f50: 34 31 34 31 34 31 34 31 22 0a 20 20 20 20 20 20  41414141".      
0f60: 20 20 20 20 20 20 2b 20 22 34 31 34 31 34 31 34        + "4141414
0f70: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0f80: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0f90: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0fa0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
0fb0: 31 34 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  14".            
0fc0: 2b 20 22 31 34 31 34 31 34 31 34 31 34 31 34 31  + "1414141414141
0fd0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0fe0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
0ff0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1000: 34 31 34 31 34 31 34 31 34 31 34 31 22 0a 20 20  414141414141".  
1010: 20 20 20 20 20 20 20 20 20 20 2b 20 22 34 31 34            + "414
1020: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1030: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1040: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1050: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1060: 31 34 31 34 31 34 22 0a 20 20 20 20 20 20 20 20  141414".        
1070: 20 20 20 20 2b 20 22 31 34 31 34 31 34 31 34 31      + "141414141
1080: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1090: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
10a0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
10b0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
10c0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 2b 20  ".            + 
10d0: 22 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  "414141414141414
10e0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
10f0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1100: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1110: 31 34 31 34 31 34 31 34 31 34 22 0a 20 20 20 20  1414141414".    
1120: 20 20 20 20 20 20 20 20 2b 20 22 31 34 31 34 31          + "14141
1130: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1140: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1150: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1160: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1170: 34 31 34 31 22 0a 20 20 20 20 20 20 20 20 20 20  4141".          
1180: 20 20 2b 20 22 34 31 34 31 34 31 34 31 34 31 34    + "41414141414
1190: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
11a0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
11b0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
11c0: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 22 0a  14141414141414".
11d0: 20 20 20 20 20 20 20 20 20 20 20 20 2b 20 22 31              + "1
11e0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
11f0: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1200: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1210: 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31  4141414141414141
1220: 34 31 34 31 34 31 34 31 22 0a 20 20 20 20 20 20  41414141".      
1230: 20 20 20 20 20 20 2b 20 22 34 31 34 31 34 31 34        + "4141414
1240: 31 34 31 34 31 34 31 34 31 34 31 34 31 34 31 34  1414141414141414
1250: 31 34 31 34 31 34 31 34 31 22 29 2c 0a 0a 20 20  141414141"),..  
1260: 20 20 20 20 20 20 20 20 20 20 28 22 67 2e 74 65            ("g.te
1270: 73 74 2e 31 30 32 34 2e 41 41 41 41 41 41 41 41  st.1024.AAAAAAAA
1280: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1290: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
12a0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
12b0: 41 41 41 41 41 41 41 41 41 41 41 41 41 22 0a 20  AAAAAAAAAAAAA". 
12c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2b                 +
12d0: 20 22 41 41 41 41 41 41 41 41 41 41 41 41 41 41   "AAAAAAAAAAAAAA
12e0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
12f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1300: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1310: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 22 0a  AAAAAAAAAAAAAA".
1320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1330: 2b 20 22 41 41 41 41 41 41 41 41 41 41 41 41 41  + "AAAAAAAAAAAAA
1340: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1350: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1360: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1370: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 22  AAAAAAAAAAAAAAA"
1380: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1390: 20 2b 20 22 41 41 41 41 41 41 41 41 41 41 41 41   + "AAAAAAAAAAAA
13a0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
13b0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
13c0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
13d0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
13e0: 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ".              
13f0: 20 20 2b 20 22 41 41 41 41 41 41 41 41 41 41 41    + "AAAAAAAAAAA
1400: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1410: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1420: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1430: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1440: 41 22 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  A".             
1450: 20 20 20 2b 20 22 41 41 41 41 41 41 41 41 41 41     + "AAAAAAAAAA
1460: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1470: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1480: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1490: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
14a0: 41 41 22 0a 20 20 20 20 20 20 20 20 20 20 20 20  AA".            
14b0: 20 20 20 20 2b 20 22 41 41 41 41 41 41 41 41 41      + "AAAAAAAAA
14c0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
14d0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
14e0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
14f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1500: 41 41 41 22 0a 20 20 20 20 20 20 20 20 20 20 20  AAA".           
1510: 20 20 20 20 20 2b 20 22 41 41 41 41 41 41 41 41       + "AAAAAAAA
1520: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1530: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1540: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1550: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1560: 41 41 41 41 22 0a 20 20 20 20 20 20 20 20 20 20  AAAA".          
1570: 20 20 20 20 20 20 2b 20 22 41 41 41 41 41 41 41        + "AAAAAAA
1580: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1590: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
15a0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
15b0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
15c0: 41 41 41 41 41 22 0a 20 20 20 20 20 20 20 20 20  AAAAA".         
15d0: 20 20 20 20 20 20 20 2b 20 22 41 41 41 41 41 41         + "AAAAAA
15e0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
15f0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1600: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1610: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1620: 41 41 41 41 41 41 22 0a 20 20 20 20 20 20 20 20  AAAAAA".        
1630: 20 20 20 20 20 20 20 20 2b 20 22 41 41 41 41 41          + "AAAAA
1640: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1650: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1660: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1670: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1680: 41 41 41 41 41 41 41 22 0a 20 20 20 20 20 20 20  AAAAAAA".       
1690: 20 20 20 20 20 20 20 20 20 2b 20 22 41 41 41 41           + "AAAA
16a0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
16b0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
16c0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
16d0: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
16e0: 41 41 41 41 41 41 41 41 22 0a 20 20 20 20 20 20  AAAAAAAA".      
16f0: 20 20 20 20 20 20 20 20 20 20 2b 20 22 41 41 41            + "AAA
1700: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1710: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1720: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1730: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1740: 41 41 41 41 41 41 41 41 41 22 0a 20 20 20 20 20  AAAAAAAAA".     
1750: 20 20 20 20 20 20 20 20 20 20 20 2b 20 22 41 41             + "AA
1760: 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41 41  AAAAAAAAAAAAAAAA
1770: 41 41 41 41 41 41 41 41 41 41 41 41 22 29 2e 67  AAAAAAAAAAAA").g
1780: 65 74 42 79 74 65 73 28 29 7d 2c 7d 29 3b 0a 20  etBytes()},});. 
1790: 20 7d 0a 0a 20 20 2f 2a 2a 0a 20 20 20 2a 20 54   }..  /**.   * T
17a0: 65 73 74 20 73 65 74 75 70 2e 0a 20 20 20 2a 2f  est setup..   */
17b0: 0a 20 20 40 42 65 66 6f 72 65 0a 20 20 70 75 62  .  @Before.  pub
17c0: 6c 69 63 20 76 6f 69 64 20 73 65 74 55 70 28 29  lic void setUp()
17d0: 20 74 68 72 6f 77 73 20 45 78 63 65 70 74 69 6f   throws Exceptio
17e0: 6e 20 7b 0a 20 20 20 20 2f 2f 20 52 65 67 69 73  n {.    // Regis
17f0: 74 65 72 20 74 68 65 20 63 6f 64 65 63 20 74 6f  ter the codec to
1800: 20 62 65 20 74 65 73 74 65 64 2e 2e 2e 0a 20 20   be tested....  
1810: 20 20 66 69 6e 61 6c 20 4f 65 72 4c 65 6e 67 74    final OerLengt
1820: 68 50 72 65 66 69 78 43 6f 64 65 63 20 6f 65 72  hPrefixCodec oer
1830: 4c 65 6e 67 74 68 50 72 65 66 69 78 43 6f 64 65  LengthPrefixCode
1840: 20 3d 20 6e 65 77 20 4f 65 72 4c 65 6e 67 74 68   = new OerLength
1850: 50 72 65 66 69 78 43 6f 64 65 63 28 29 3b 0a 20  PrefixCodec();. 
1860: 20 20 20 6f 65 72 4f 63 74 65 74 53 74 72 69 6e     oerOctetStrin
1870: 67 43 6f 64 65 63 20 3d 20 6e 65 77 20 4f 65 72  gCodec = new Oer
1880: 4f 63 74 65 74 53 74 72 69 6e 67 43 6f 64 65 63  OctetStringCodec
1890: 28 29 3b 0a 20 20 20 20 63 6f 64 65 63 43 6f 6e  ();.    codecCon
18a0: 74 65 78 74 20 3d 20 6e 65 77 20 43 6f 64 65 63  text = new Codec
18b0: 43 6f 6e 74 65 78 74 28 29 2e 72 65 67 69 73 74  Context().regist
18c0: 65 72 28 4f 65 72 4c 65 6e 67 74 68 50 72 65 66  er(OerLengthPref
18d0: 69 78 2e 63 6c 61 73 73 2c 20 6f 65 72 4c 65 6e  ix.class, oerLen
18e0: 67 74 68 50 72 65 66 69 78 43 6f 64 65 29 0a 20  gthPrefixCode). 
18f0: 20 20 20 20 20 20 20 2e 72 65 67 69 73 74 65 72         .register
1900: 28 4f 65 72 4f 63 74 65 74 53 74 72 69 6e 67 2e  (OerOctetString.
1910: 63 6c 61 73 73 2c 20 6f 65 72 4f 63 74 65 74 53  class, oerOctetS
1920: 74 72 69 6e 67 43 6f 64 65 63 29 3b 0a 20 20 7d  tringCodec);.  }
1930: 0a 0a 20 20 40 54 65 73 74 0a 20 20 70 75 62 6c  ..  @Test.  publ
1940: 69 63 20 76 6f 69 64 20 72 65 61 64 54 65 73 74  ic void readTest
1950: 28 29 20 74 68 72 6f 77 73 20 45 78 63 65 70 74  () throws Except
1960: 69 6f 6e 20 7b 0a 20 20 20 20 2f 2f 20 54 68 69  ion {.    // Thi
1970: 73 20 73 74 72 65 61 6d 20 61 6c 6c 6f 77 73 20  s stream allows 
1980: 74 68 65 20 63 6f 64 65 63 20 74 6f 20 72 65 61  the codec to rea
1990: 64 20 74 68 65 20 61 73 6e 31 42 79 74 65 73 2e  d the asn1Bytes.
19a0: 2e 2e 0a 20 20 20 20 42 79 74 65 41 72 72 61 79  ...    ByteArray
19b0: 49 6e 70 75 74 53 74 72 65 61 6d 20 69 6e 70 75  InputStream inpu
19c0: 74 53 74 72 65 61 6d 20 3d 20 6e 65 77 20 42 79  tStream = new By
19d0: 74 65 41 72 72 61 79 49 6e 70 75 74 53 74 72 65  teArrayInputStre
19e0: 61 6d 28 61 73 6e 31 42 79 74 65 56 61 6c 75 65  am(asn1ByteValue
19f0: 29 3b 0a 0a 20 20 20 20 2f 2f 20 41 73 73 65 72  );..    // Asser
1a00: 74 20 74 68 61 74 20 74 68 65 20 63 6f 64 65 64  t that the coded
1a10: 20 72 65 61 64 20 62 79 74 65 73 20 74 68 61 74   read bytes that
1a20: 20 65 71 75 61 6c 20 77 68 61 74 20 74 68 65 20   equal what the 
1a30: 68 61 72 6e 65 73 73 20 70 75 74 20 69 6e 74 6f  harness put into
1a40: 20 6f 63 74 65 74 42 79 74 65 73 2e 0a 20 20 20   octetBytes..   
1a50: 20 66 69 6e 61 6c 20 62 79 74 65 5b 5d 20 61 63   final byte[] ac
1a60: 74 75 61 6c 56 61 6c 75 65 20 3d 20 6f 65 72 4f  tualValue = oerO
1a70: 63 74 65 74 53 74 72 69 6e 67 43 6f 64 65 63 2e  ctetStringCodec.
1a80: 72 65 61 64 28 63 6f 64 65 63 43 6f 6e 74 65 78  read(codecContex
1a90: 74 2c 20 69 6e 70 75 74 53 74 72 65 61 6d 29 2e  t, inputStream).
1aa0: 67 65 74 56 61 6c 75 65 28 29 3b 0a 20 20 20 20  getValue();.    
1ab0: 61 73 73 65 72 74 54 68 61 74 28 61 63 74 75 61  assertThat(actua
1ac0: 6c 56 61 6c 75 65 2c 20 69 73 28 6f 63 74 65 74  lValue, is(octet
1ad0: 42 79 74 65 73 29 29 3b 0a 20 20 7d 0a 0a 20 20  Bytes));.  }..  
1ae0: 40 54 65 73 74 0a 20 20 70 75 62 6c 69 63 20 76  @Test.  public v
1af0: 6f 69 64 20 77 72 69 74 65 54 65 73 74 28 29 20  oid writeTest() 
1b00: 74 68 72 6f 77 73 20 45 78 63 65 70 74 69 6f 6e  throws Exception
1b10: 20 7b 0a 20 20 20 20 2f 2f 20 41 6c 6c 6f 77 20   {.    // Allow 
1b20: 74 68 65 20 43 6f 64 65 63 20 74 6f 20 77 72 69  the Codec to wri
1b30: 74 65 20 74 6f 20 27 6f 75 74 70 75 74 53 74 72  te to 'outputStr
1b40: 65 61 6d 27 0a 20 20 20 20 66 69 6e 61 6c 20 42  eam'.    final B
1b50: 79 74 65 41 72 72 61 79 4f 75 74 70 75 74 53 74  yteArrayOutputSt
1b60: 72 65 61 6d 20 6f 75 74 70 75 74 53 74 72 65 61  ream outputStrea
1b70: 6d 20 3d 20 6e 65 77 20 42 79 74 65 41 72 72 61  m = new ByteArra
1b80: 79 4f 75 74 70 75 74 53 74 72 65 61 6d 28 29 3b  yOutputStream();
1b90: 0a 20 20 20 20 6f 65 72 4f 63 74 65 74 53 74 72  .    oerOctetStr
1ba0: 69 6e 67 43 6f 64 65 63 2e 77 72 69 74 65 28 63  ingCodec.write(c
1bb0: 6f 64 65 63 43 6f 6e 74 65 78 74 2c 20 6e 65 77  odecContext, new
1bc0: 20 4f 65 72 4f 63 74 65 74 53 74 72 69 6e 67 28   OerOctetString(
1bd0: 6f 63 74 65 74 42 79 74 65 73 29 2c 20 6f 75 74  octetBytes), out
1be0: 70 75 74 53 74 72 65 61 6d 29 3b 0a 0a 20 20 20  putStream);..   
1bf0: 20 2f 2f 20 41 73 73 65 72 74 20 74 68 61 74 20   // Assert that 
1c00: 74 68 65 20 62 79 74 65 73 20 77 72 69 74 74 65  the bytes writte
1c10: 6e 20 74 6f 20 27 6f 75 74 70 75 74 53 74 72 65  n to 'outputStre
1c20: 61 6d 27 20 6d 61 74 63 68 20 74 68 65 20 63 6f  am' match the co
1c30: 6e 74 65 6e 74 73 20 74 68 61 74 20 74 68 65 20  ntents that the 
1c40: 68 61 72 6e 65 73 73 20 70 75 74 0a 20 20 20 20  harness put.    
1c50: 2f 2f 20 69 6e 74 6f 20 61 73 6e 31 42 79 74 65  // into asn1Byte
1c60: 56 61 6c 75 65 2e 0a 20 20 20 20 61 73 73 65 72  Value..    asser
1c70: 74 41 72 72 61 79 45 71 75 61 6c 73 28 61 73 6e  tArrayEquals(asn
1c80: 31 42 79 74 65 56 61 6c 75 65 2c 20 6f 75 74 70  1ByteValue, outp
1c90: 75 74 53 74 72 65 61 6d 2e 74 6f 42 79 74 65 41  utStream.toByteA
1ca0: 72 72 61 79 28 29 29 3b 0a 20 20 7d 0a 0a 20 20  rray());.  }..  
1cb0: 40 54 65 73 74 0a 20 20 70 75 62 6c 69 63 20 76  @Test.  public v
1cc0: 6f 69 64 20 77 72 69 74 65 52 65 61 64 57 72 69  oid writeReadWri
1cd0: 74 65 54 65 73 74 28 29 20 74 68 72 6f 77 73 20  teTest() throws 
1ce0: 45 78 63 65 70 74 69 6f 6e 20 7b 0a 20 20 20 20  Exception {.    
1cf0: 2f 2f 20 57 72 69 74 65 20 6f 63 74 65 74 73 2e  // Write octets.
1d00: 2e 2e 0a 20 20 20 20 66 69 6e 61 6c 20 42 79 74  ...    final Byt
1d10: 65 41 72 72 61 79 4f 75 74 70 75 74 53 74 72 65  eArrayOutputStre
1d20: 61 6d 20 6f 75 74 70 75 74 53 74 72 65 61 6d 20  am outputStream 
1d30: 3d 20 6e 65 77 20 42 79 74 65 41 72 72 61 79 4f  = new ByteArrayO
1d40: 75 74 70 75 74 53 74 72 65 61 6d 28 29 3b 0a 20  utputStream();. 
1d50: 20 20 20 6f 65 72 4f 63 74 65 74 53 74 72 69 6e     oerOctetStrin
1d60: 67 43 6f 64 65 63 2e 77 72 69 74 65 28 63 6f 64  gCodec.write(cod
1d70: 65 63 43 6f 6e 74 65 78 74 2c 20 6e 65 77 20 4f  ecContext, new O
1d80: 65 72 4f 63 74 65 74 53 74 72 69 6e 67 28 6f 63  erOctetString(oc
1d90: 74 65 74 42 79 74 65 73 29 2c 20 6f 75 74 70 75  tetBytes), outpu
1da0: 74 53 74 72 65 61 6d 29 3b 0a 0a 20 20 20 20 2f  tStream);..    /
1db0: 2f 20 52 65 61 64 20 6f 63 74 65 74 73 2e 2e 2e  / Read octets...
1dc0: 0a 20 20 20 20 66 69 6e 61 6c 20 42 79 74 65 41  .    final ByteA
1dd0: 72 72 61 79 49 6e 70 75 74 53 74 72 65 61 6d 20  rrayInputStream 
1de0: 69 6e 70 75 74 53 74 72 65 61 6d 20 3d 20 6e 65  inputStream = ne
1df0: 77 20 42 79 74 65 41 72 72 61 79 49 6e 70 75 74  w ByteArrayInput
1e00: 53 74 72 65 61 6d 28 6f 75 74 70 75 74 53 74 72  Stream(outputStr
1e10: 65 61 6d 2e 74 6f 42 79 74 65 41 72 72 61 79 28  eam.toByteArray(
1e20: 29 29 3b 0a 20 20 20 20 66 69 6e 61 6c 20 4f 65  ));.    final Oe
1e30: 72 4f 63 74 65 74 53 74 72 69 6e 67 20 61 63 74  rOctetString act
1e40: 75 61 6c 20 3d 20 6f 65 72 4f 63 74 65 74 53 74  ual = oerOctetSt
1e50: 72 69 6e 67 43 6f 64 65 63 2e 72 65 61 64 28 63  ringCodec.read(c
1e60: 6f 64 65 63 43 6f 6e 74 65 78 74 2c 20 69 6e 70  odecContext, inp
1e70: 75 74 53 74 72 65 61 6d 29 3b 0a 20 20 20 20 61  utStream);.    a
1e80: 73 73 65 72 74 54 68 61 74 28 61 63 74 75 61 6c  ssertThat(actual
1e90: 2e 67 65 74 56 61 6c 75 65 28 29 2c 20 69 73 28  .getValue(), is(
1ea0: 6f 63 74 65 74 42 79 74 65 73 29 29 3b 0a 0a 20  octetBytes));.. 
1eb0: 20 20 20 2f 2f 20 57 72 69 74 65 20 6f 63 74 65     // Write octe
1ec0: 74 73 20 61 67 61 69 6e 2e 2e 2e 0a 20 20 20 20  ts again....    
1ed0: 66 69 6e 61 6c 20 42 79 74 65 41 72 72 61 79 4f  final ByteArrayO
1ee0: 75 74 70 75 74 53 74 72 65 61 6d 20 6f 75 74 70  utputStream outp
1ef0: 75 74 53 74 72 65 61 6d 32 20 3d 20 6e 65 77 20  utStream2 = new 
1f00: 42 79 74 65 41 72 72 61 79 4f 75 74 70 75 74 53  ByteArrayOutputS
1f10: 74 72 65 61 6d 28 29 3b 0a 20 20 20 20 6f 65 72  tream();.    oer
1f20: 4f 63 74 65 74 53 74 72 69 6e 67 43 6f 64 65 63  OctetStringCodec
1f30: 2e 77 72 69 74 65 28 63 6f 64 65 63 43 6f 6e 74  .write(codecCont
1f40: 65 78 74 2c 20 61 63 74 75 61 6c 2c 20 6f 75 74  ext, actual, out
1f50: 70 75 74 53 74 72 65 61 6d 32 29 3b 0a 0a 20 20  putStream2);..  
1f60: 20 20 2f 2f 20 41 73 73 65 72 74 20 6f 72 69 67    // Assert orig
1f70: 69 6e 61 6c 6c 79 20 77 72 69 74 74 65 6e 20 62  inally written b
1f80: 79 74 65 73 20 65 71 75 61 6c 73 20 6e 65 77 6c  ytes equals newl
1f90: 79 20 77 72 69 74 74 65 6e 20 62 79 74 65 73 2e  y written bytes.
1fa0: 0a 20 20 20 20 61 73 73 65 72 74 41 72 72 61 79  .    assertArray
1fb0: 45 71 75 61 6c 73 28 6f 75 74 70 75 74 53 74 72  Equals(outputStr
1fc0: 65 61 6d 2e 74 6f 42 79 74 65 41 72 72 61 79 28  eam.toByteArray(
1fd0: 29 2c 20 6f 75 74 70 75 74 53 74 72 65 61 6d 32  ), outputStream2
1fe0: 2e 74 6f 42 79 74 65 41 72 72 61 79 28 29 29 3b  .toByteArray());
1ff0: 0a 20 20 7d 0a 7d 0a                             .  }.}.