#!/bin/sh test_description='test oidmap' . ./test-lib.sh # This purposefully is very similar to t0011-hashmap.sh test_oidmap () { echo "$1" | test-tool oidmap $3 >actual && echo "$2" >expect && test_cmp expect actual } test_expect_success 'setup' ' test_commit one && test_commit two && test_commit three && test_commit four ' test_expect_success 'put' ' test_oidmap "put one 1 put two 2 put invalidOid 4 put three 3" "NULL NULL Unknown oid: invalidOid NULL" ' test_expect_success 'replace' ' test_oidmap "put one 1 put two 2 put three 3 put invalidOid 4 put two deux put one un" "NULL NULL NULL Unknown oid: invalidOid 2 1" ' test_expect_success 'get' ' test_oidmap "put one 1 put two 2 put three 3 get two get four get invalidOid get one" "NULL NULL NULL 2 NULL Unknown oid: invalidOid 1" ' test_expect_success 'remove' ' test_oidmap "put one 1 put two 2 put three 3 remove one remove two remove invalidOid remove four" "NULL NULL NULL 1 2 Unknown oid: invalidOid NULL" ' test_expect_success 'iterate' ' test-tool oidmap >actual.raw <<-\EOF && put one 1 put two 2 put three 3 iterate EOF # sort "expect" too so we do not rely on the order of particular oids sort >expect <<-EOF && NULL NULL NULL $(git rev-parse one) 1 $(git rev-parse two) 2 $(git rev-parse three) 3 EOF sort <actual.raw >actual && test_cmp expect actual ' test_done