(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <'basic tests for the SHA1 array implementation'>)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (FuncDef name: echo20 body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prefix) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {($ VSub_Number '$1') (' ')} ) spids: [24 29] ) ) } spids: [22] ) ] spids: [22] ) (C {(shift)}) (While cond: [(C {(test)} {($ VSub_Pound '$#')} {(-gt)} {(0)})] body: (DoGroup children: [ (C {(echo)} { (DQ ($ VSub_Name '$prefix') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ($ VSub_Number '$1') ) } ) (C {(shift)}) ] spids: [47 80] ) ) ] spids: [19] ) spids: [14 18] ) (C {(test_expect_success)} {(SQ <'ordered enumeration'>)} { (SQ <'\n'> <'\techo20 "" 44 55 88 aa >expect &&\n'> <'\t{\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo for_each_unique\n'> <'\t} | test-sha1-array >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <'ordered enumeration with duplicate suppression'>)} { (SQ <'\n'> <'\techo20 "" 44 55 88 aa >expect &&\n'> <'\t{\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo for_each_unique\n'> <'\t} | test-sha1-array >actual &&\n'> <'\ttest_cmp expect actual\n'> ) } ) (C {(test_expect_success)} {(SQ <lookup>)} { (SQ <'\n'> <'\t{\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 lookup 55\n'> <'\t} | test-sha1-array >actual &&\n'> <'\tn=$(cat actual) &&\n'> <'\ttest "$n" -eq 1\n'> ) } ) (C {(test_expect_success)} {(SQ <'lookup non-existing entry'>)} { (SQ <'\n'> <'\t{\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 lookup 33\n'> <'\t} | test-sha1-array >actual &&\n'> <'\tn=$(cat actual) &&\n'> <'\ttest "$n" -lt 0\n'> ) } ) (C {(test_expect_success)} {(SQ <'lookup with duplicates'>)} { (SQ <'\n'> <'\t{\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 lookup 55\n'> <'\t} | test-sha1-array >actual &&\n'> <'\tn=$(cat actual) &&\n'> <'\ttest "$n" -ge 2 &&\n'> <'\ttest "$n" -le 3\n'> ) } ) (C {(test_expect_success)} {(SQ <'lookup non-existing entry with duplicates'>)} { (SQ <'\n'> <'\t{\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 append 88 44 aa 55 &&\n'> <'\t\techo20 lookup 66\n'> <'\t} | test-sha1-array >actual &&\n'> <'\tn=$(cat actual) &&\n'> <'\ttest "$n" -lt 0\n'> ) } ) (C {(test_expect_success)} {(SQ <'lookup with almost duplicate values'>)} { (SQ <'\n'> <'\t{\n'> <'\t\techo "append 5555555555555555555555555555555555555555" &&\n'> <'\t\techo "append 555555555555555555555555555555555555555f" &&\n'> <'\t\techo20 lookup 55\n'> <'\t} | test-sha1-array >actual &&\n'> <'\tn=$(cat actual) &&\n'> <'\ttest "$n" -eq 0\n'> ) } ) (C {(test_expect_success)} {(SQ <'lookup with single duplicate value'>)} { (SQ <'\n'> <'\t{\n'> <'\t\techo20 append 55 55 &&\n'> <'\t\techo20 lookup 55\n'> <'\t} | test-sha1-array >actual &&\n'> <'\tn=$(cat actual) &&\n'> <'\ttest "$n" -ge 0 &&\n'> <'\ttest "$n" -le 1\n'> ) } ) (C {(test_done)}) ] )