Verifies: SYS-REQ-035 [boundary] Code MC/DC gap: parser.go:801 Delete data[endOffset+tokEnd] == ']' && data[tokStart] == ',' Full MC/DC for the array-branch elif at line 801. Need (T,T) => T and (F,?) => F: (T,T): delete last element from [1,2] — delimiter is ']' and preceding comma exists. (F): d
(t *testing.T)
| 875 | // (T,T): delete last element from [1,2] — delimiter is ']' and preceding comma exists. |
| 876 | // (F): delete from malformed [1} — delimiter is '}' not ']'. |
| 877 | func TestCodeMCDC_DeleteArrayElifMCDC(t *testing.T) { |
| 878 | t.Run("TT: delete last array element", func(t *testing.T) { |
| 879 | // Delete [1] from [1,2]: delimiter after "2" is ']', comma before "2" exists. |
| 880 | got := string(Delete([]byte(`[1,2]`), "[1]")) |
| 881 | if got != `[1]` { |
| 882 | t.Fatalf("Delete [1] from [1,2] = %q, want %q", got, `[1]`) |
| 883 | } |
| 884 | }) |
| 885 | |
| 886 | t.Run("F: malformed array delimiter", func(t *testing.T) { |
| 887 | // Delete [0] from malformed [1}: delimiter after "1" is '}' not ']'. |
| 888 | // data[endOffset+tokEnd] == ']' is FALSE. |
| 889 | got := string(Delete([]byte(`[1}`), "[0]")) |
| 890 | if got != `[}` { |
| 891 | t.Fatalf("Delete [0] from [1} = %q, want %q", got, `[}`) |
| 892 | } |
| 893 | }) |
| 894 | |
| 895 | t.Run("F: multi-element first", func(t *testing.T) { |
| 896 | // Delete [0] from [1,2,3]: delimiter after "1" is ',' not ']'. |
| 897 | // First if catches comma, elif not reached. |
| 898 | got := string(Delete([]byte(`[1,2,3]`), "[0]")) |
| 899 | if got != `[2,3]` { |
| 900 | t.Fatalf("Delete [0] from [1,2,3] = %q, want %q", got, `[2,3]`) |
| 901 | } |
| 902 | }) |
| 903 | } |