(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"test hashmap and string hash functions">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: test_hashmap body: (BraceGroup children: [ (AndOr children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Number "$1"))}) (SimpleCommand words: [{(test-hashmap)} {($ VSub_Number "$3")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(actual)} spids:[33])] ) ] negated: False ) (AndOr children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Number "$2"))}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(expect)} spids:[46])] ) (C {(test_cmp)} {(expect)} {(actual)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [18] ) spids: [14 17] ) (C {(test_expect_success)} {(SQ <"hash functions">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"hash key1\" \"2215982743 2215982743 116372151 116372151\" &&\n"> <"test_hashmap \"hash key2\" \"2215982740 2215982740 116372148 116372148\" &&\n"> < "test_hashmap \"hash fooBarFrotz\" \"1383912807 1383912807 3189766727 3189766727\" &&\n" > <"test_hashmap \"hash foobarfrotz\" \"2862305959 2862305959 3189766727 3189766727\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <put>)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"put foobarfrotz value4\n"> <"size\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"NULL\n"> <"64 4\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"put (case insensitive)">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"size\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"64 3\" ignorecase\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <replace>)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key1 value2\n"> <"put fooBarFrotz value3\n"> <"put fooBarFrotz value4\n"> <"size\" \"NULL\n"> <"value1\n"> <"NULL\n"> <"value3\n"> <"64 2\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"replace (case insensitive)">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put Key1 value2\n"> <"put fooBarFrotz value3\n"> <"put foobarfrotz value4\n"> <"size\" \"NULL\n"> <"value1\n"> <"NULL\n"> <"value3\n"> <"64 2\" ignorecase\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <get>)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"put foobarfrotz value4\n"> <"get key1\n"> <"get key2\n"> <"get fooBarFrotz\n"> <"get notInMap\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"NULL\n"> <"value1\n"> <"value2\n"> <"value3\n"> <"NULL\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"get (case insensitive)">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"get Key1\n"> <"get keY2\n"> <"get foobarfrotz\n"> <"get notInMap\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"value1\n"> <"value2\n"> <"value3\n"> <"NULL\" ignorecase\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <add>)} { (SQ <"\n"> <"\n"> <"test_hashmap \"add key1 value1\n"> <"add key1 value2\n"> <"add fooBarFrotz value3\n"> <"add fooBarFrotz value4\n"> <"get key1\n"> <"get fooBarFrotz\n"> <"get notInMap\" \"value2\n"> <"value1\n"> <"value4\n"> <"value3\n"> <"NULL\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"add (case insensitive)">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"add key1 value1\n"> <"add Key1 value2\n"> <"add fooBarFrotz value3\n"> <"add foobarfrotz value4\n"> <"get key1\n"> <"get Foobarfrotz\n"> <"get notInMap\" \"value2\n"> <"value1\n"> <"value4\n"> <"value3\n"> <"NULL\" ignorecase\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <remove>)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"remove key1\n"> <"remove key2\n"> <"remove notInMap\n"> <"size\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"value1\n"> <"value2\n"> <"NULL\n"> <"64 1\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"remove (case insensitive)">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"remove Key1\n"> <"remove keY2\n"> <"remove notInMap\n"> <"size\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"value1\n"> <"value2\n"> <"NULL\n"> <"64 1\" ignorecase\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <iterate>)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"iterate\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"key2 value2\n"> <"key1 value1\n"> <"fooBarFrotz value3\"\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"iterate (case insensitive)">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"put key1 value1\n"> <"put key2 value2\n"> <"put fooBarFrotz value3\n"> <"iterate\" \"NULL\n"> <"NULL\n"> <"NULL\n"> <"fooBarFrotz value3\n"> <"key2 value2\n"> <"key1 value1\" ignorecase\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"grow / shrink">)} { (SQ <"\n"> <"\n"> <"\trm -f in &&\n"> <"\trm -f expect &&\n"> <"\tfor n in $(test_seq 51)\n"> <"\tdo\n"> <"\t\techo put key$n value$n >> in &&\n"> <"\t\techo NULL >> expect\n"> <"\tdone &&\n"> <"\techo size >> in &&\n"> <"\techo 64 51 >> expect &&\n"> <"\techo put key52 value52 >> in &&\n"> <"\techo NULL >> expect &&\n"> <"\techo size >> in &&\n"> <"\techo 256 52 >> expect &&\n"> <"\tfor n in $(test_seq 12)\n"> <"\tdo\n"> <"\t\techo remove key$n >> in &&\n"> <"\t\techo value$n >> expect\n"> <"\tdone &&\n"> <"\techo size >> in &&\n"> <"\techo 256 40 >> expect &&\n"> <"\techo remove key40 >> in &&\n"> <"\techo value40 >> expect &&\n"> <"\techo size >> in &&\n"> <"\techo 64 39 >> expect &&\n"> <"\tcat in | test-hashmap > out &&\n"> <"\ttest_cmp expect out\n"> <"\n"> ) } ) (C {(test_expect_success)} {(SQ <"string interning">)} { (SQ <"\n"> <"\n"> <"test_hashmap \"intern value1\n"> <"intern Value1\n"> <"intern value2\n"> <"intern value2\n"> <"\" \"value1\n"> <"Value1\n"> <"value2\n"> <"value2\"\n"> <"\n"> ) } ) (C {(test_done)}) ] )