<s> import unittest <EOL> from autoprotocol . harness import ProtocolInfo , Manifest <EOL> from autoprotocol import Protocol , Unit , Well , WellGroup <EOL> import json <EOL> class ManifestTest ( unittest . TestCase ) : <EOL> def setUp ( self ) : <EOL> self . protocol = Protocol ( ) <EOL> def test_empty ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { } <EOL> } ) <EOL> self . assertEqual ( { } , parsed ) <EOL> def test_basic_types ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : '<STR_LIT:bool>' , <EOL> '<STR_LIT:string>' : '<STR_LIT:string>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : True , <EOL> '<STR_LIT:string>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT>' : <NUM_LIT> <EOL> } <EOL> } ) <EOL> self . assertEqual ( { <EOL> '<STR_LIT:bool>' : True , <EOL> '<STR_LIT:string>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT>' : <NUM_LIT> <EOL> } , parsed ) <EOL> with self . assertRaises ( RuntimeError ) : <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : True , <EOL> '<STR_LIT:string>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : "<STR_LIT>" , <EOL> '<STR_LIT>' : <NUM_LIT> <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : True , <EOL> '<STR_LIT:string>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : "<STR_LIT:3>" , <EOL> '<STR_LIT>' : "<STR_LIT>" <EOL> } <EOL> } ) <EOL> def test_unit_types ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:time>' : '<STR_LIT:time>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:time>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> self . assertEqual ( { <EOL> '<STR_LIT>' : Unit . fromstring ( '<STR_LIT>' ) , <EOL> '<STR_LIT:time>' : Unit . fromstring ( '<STR_LIT>' ) , <EOL> '<STR_LIT>' : Unit . fromstring ( '<STR_LIT>' ) <EOL> } , parsed ) <EOL> with self . assertRaises ( RuntimeError ) : <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : <NUM_LIT:3> , <EOL> '<STR_LIT:time>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : "<STR_LIT>" , <EOL> '<STR_LIT:time>' : "<STR_LIT:hello>" , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : "<STR_LIT>" , <EOL> '<STR_LIT:time>' : "<STR_LIT>" , <EOL> '<STR_LIT>' : <NUM_LIT> <EOL> } <EOL> } ) <EOL> def test_group ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] , dict ) ) <EOL> self . assertTrue ( '<STR_LIT:test>' in parsed [ '<STR_LIT>' ] ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] [ '<STR_LIT:test>' ] , Well ) ) <EOL> with self . assertRaises ( RuntimeError ) : <EOL> protocol_info1 = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : '<STR_LIT:bool>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } <EOL> } ) <EOL> protocol_info1 . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ "<STR_LIT:hello>" ] <EOL> } <EOL> } ) <EOL> protocol_info2 = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } ) <EOL> protocol_info2 . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT:bool>" : True , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : [ "<STR_LIT>" ] <EOL> } <EOL> } <EOL> } ) <EOL> def test_multigroup ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT:test>' : '<STR_LIT>' } , <EOL> { '<STR_LIT:test>' : '<STR_LIT>' } <EOL> ] <EOL> } <EOL> } ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] , list ) ) <EOL> self . assertEqual ( <NUM_LIT:2> , len ( parsed [ '<STR_LIT>' ] ) ) <EOL> self . assertTrue ( '<STR_LIT:test>' in parsed [ '<STR_LIT>' ] [ <NUM_LIT:0> ] ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] [ <NUM_LIT:0> ] [ '<STR_LIT:test>' ] , Well ) ) <EOL> self . assertTrue ( '<STR_LIT:test>' in parsed [ '<STR_LIT>' ] [ <NUM_LIT:1> ] ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] [ <NUM_LIT:1> ] [ '<STR_LIT:test>' ] , Well ) ) <EOL> self . assertEqual ( <NUM_LIT:1> , parsed [ '<STR_LIT>' ] [ <NUM_LIT:1> ] [ '<STR_LIT:test>' ] . index ) <EOL> with self . assertRaises ( RuntimeError ) : <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' , <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } ) <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : [ <EOL> { '<STR_LIT:test>' : '<STR_LIT>' } , <EOL> { '<STR_LIT:test>' : '<STR_LIT>' } <EOL> ] <EOL> } <EOL> } ) <EOL> def test_group_choice ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:value>' : '<STR_LIT:a>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } <EOL> } , <EOL> { <EOL> '<STR_LIT:value>' : '<STR_LIT:b>' <EOL> } <EOL> ] <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:value>' : '<STR_LIT:a>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:a>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } , <EOL> '<STR_LIT:b>' : { <EOL> } <EOL> } <EOL> } <EOL> } <EOL> } ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] , dict ) ) <EOL> self . assertEqual ( '<STR_LIT:a>' , parsed [ '<STR_LIT>' ] [ '<STR_LIT:value>' ] ) <EOL> self . assertTrue ( '<STR_LIT:a>' in parsed [ '<STR_LIT>' ] [ '<STR_LIT>' ] ) <EOL> self . assertFalse ( '<STR_LIT:b>' in parsed [ '<STR_LIT>' ] [ '<STR_LIT>' ] ) <EOL> self . assertTrue ( <EOL> isinstance ( parsed [ '<STR_LIT>' ] [ '<STR_LIT>' ] [ '<STR_LIT:a>' ] [ '<STR_LIT:test>' ] , Well ) ) <EOL> with self . assertRaises ( RuntimeError ) : <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:value>' : '<STR_LIT:a>' <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:a>' : { <EOL> '<STR_LIT:test>' : '<STR_LIT>' <EOL> } , <EOL> '<STR_LIT:b>' : { <EOL> } <EOL> } <EOL> } <EOL> } <EOL> } ) <EOL> def test_csv_table ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT>" : [ "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" ] , <EOL> "<STR_LIT>" : [ "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" ] , <EOL> "<STR_LIT>" : [ "<STR_LIT>" , "<STR_LIT>" , "<STR_LIT>" ] , <EOL> "<STR_LIT>" : [ <EOL> [ "<STR_LIT:0>" , "<STR_LIT>" , "<STR_LIT>" ] , <EOL> [ "<STR_LIT:1>" , "<STR_LIT>" , "<STR_LIT>" ] <EOL> ] , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> } , <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT:label>" : "<STR_LIT>" <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } , <EOL> '<STR_LIT>' : { '<STR_LIT:id>' : '<STR_LIT>' , '<STR_LIT:type>' : '<STR_LIT>' , '<STR_LIT>' : True } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : [ <EOL> { <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } , <EOL> [ <EOL> { <EOL> "<STR_LIT>" : <NUM_LIT:0> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT:0.5> <EOL> } , <EOL> { <EOL> "<STR_LIT>" : <NUM_LIT:1> , <EOL> "<STR_LIT>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : <NUM_LIT> <EOL> } <EOL> ] <EOL> ] <EOL> } <EOL> } ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] , list ) ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] [ <NUM_LIT:0> ] , dict ) ) <EOL> self . assertTrue ( '<STR_LIT>' in parsed [ '<STR_LIT>' ] [ <NUM_LIT:0> ] ) <EOL> self . assertTrue ( isinstance ( parsed [ '<STR_LIT>' ] [ <NUM_LIT:1> ] [ '<STR_LIT>' ] , Well ) ) <EOL> def test_blank_default ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:int>' : '<STR_LIT>' , <EOL> '<STR_LIT:str>' : '<STR_LIT:string>' , <EOL> '<STR_LIT:bool>' : '<STR_LIT:bool>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { } <EOL> } ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT:int>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT:str>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT:bool>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] ) <EOL> self . assertIsInstance ( parsed [ '<STR_LIT>' ] , list ) <EOL> def test_ref_default ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { } <EOL> } ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] ) <EOL> self . assertIsInstance ( parsed [ '<STR_LIT>' ] , WellGroup ) <EOL> self . assertEqual ( <NUM_LIT:0> , len ( parsed [ '<STR_LIT>' ] ) ) <EOL> self . assertEqual ( [ ] , parsed [ '<STR_LIT>' ] ) <EOL> self . assertEqual ( [ ] , parsed [ '<STR_LIT>' ] ) <EOL> def test_group_default ( self ) : <EOL> protocol_info = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : '<STR_LIT:bool>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:bool>' : '<STR_LIT:bool>' <EOL> } <EOL> } <EOL> } <EOL> } ) <EOL> parsed = protocol_info . parse ( self . protocol , { <EOL> '<STR_LIT>' : { } , <EOL> '<STR_LIT>' : { } <EOL> } ) <EOL> self . assertIsInstance ( parsed [ '<STR_LIT>' ] , dict ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] [ '<STR_LIT:bool>' ] ) <EOL> self . assertIsNone ( parsed [ '<STR_LIT>' ] [ '<STR_LIT>' ] ) <EOL> self . assertIsInstance ( parsed [ '<STR_LIT>' ] [ '<STR_LIT>' ] , WellGroup ) <EOL> self . assertEqual ( <NUM_LIT:0> , len ( parsed [ '<STR_LIT>' ] [ '<STR_LIT>' ] ) ) <EOL> self . assertEqual ( [ { '<STR_LIT:bool>' : None } ] , parsed [ '<STR_LIT>' ] ) <EOL> def test_container_errors ( self ) : <EOL> with self . assertRaises ( RuntimeError ) : <EOL> protocol_info1 = ProtocolInfo ( { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> } ) <EOL> protocol_info1 . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : True <EOL> } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } <EOL> } ) <EOL> protocol_info1 . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : True <EOL> } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : "<STR_LIT>" <EOL> } <EOL> } ) <EOL> protocol_info1 . parse ( self . protocol , { <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : { <EOL> "<STR_LIT:type>" : "<STR_LIT>" , <EOL> "<STR_LIT>" : True <EOL> } <EOL> } , <EOL> '<STR_LIT>' : { <EOL> "<STR_LIT>" : <NUM_LIT:12> <EOL> } <EOL> } ) <EOL> def test_json_parse ( self ) : <EOL> protocol = Protocol ( ) <EOL> with open ( '<STR_LIT>' , '<STR_LIT:r>' ) as f : <EOL> manifest_json = f . read ( ) <EOL> manifest = Manifest ( json . loads ( manifest_json ) ) <EOL> source = json . loads ( manifest_json ) [ '<STR_LIT>' ] [ <NUM_LIT:0> ] [ '<STR_LIT>' ] <EOL> manifest . protocol_info ( '<STR_LIT>' ) . parse ( protocol , source ) </s>
