Verifies: SYS-REQ-032 [boundary] MCDC SYS-REQ-032: addressed_object_is_well_formed=T, object_callback_returns_error=T, object_callback_error_is_returned=T => TRUE
(t *testing.T)
| 1901 | // Verifies: SYS-REQ-032 [boundary] |
| 1902 | // MCDC SYS-REQ-032: addressed_object_is_well_formed=T, object_callback_returns_error=T, object_callback_error_is_returned=T => TRUE |
| 1903 | func TestObjectEachNestedPathAndCallbackError(t *testing.T) { |
| 1904 | t.Run("nested object path", func(t *testing.T) { |
| 1905 | var entries []keyValueEntry |
| 1906 | err := ObjectEach([]byte(`{"outer":{"a":1,"b":true}}`), func(key, value []byte, valueType ValueType, off int) error { |
| 1907 | entries = append(entries, keyValueEntry{ |
| 1908 | key: string(key), |
| 1909 | value: string(value), |
| 1910 | valueType: valueType, |
| 1911 | }) |
| 1912 | return nil |
| 1913 | }, "outer") |
| 1914 | if err != nil { |
| 1915 | t.Fatalf("ObjectEach nested path returned error: %v", err) |
| 1916 | } |
| 1917 | expected := []keyValueEntry{ |
| 1918 | {key: "a", value: "1", valueType: Number}, |
| 1919 | {key: "b", value: "true", valueType: Boolean}, |
| 1920 | } |
| 1921 | if !reflect.DeepEqual(expected, entries) { |
| 1922 | t.Fatalf("ObjectEach nested path entries mismatch: expected %#v, got %#v", expected, entries) |
| 1923 | } |
| 1924 | }) |
| 1925 | |
| 1926 | t.Run("callback error is returned", func(t *testing.T) { |
| 1927 | sentinel := errors.New("stop iteration") |
| 1928 | err := ObjectEach([]byte(`{"a":1}`), func(key, value []byte, valueType ValueType, off int) error { |
| 1929 | return sentinel |
| 1930 | }) |
| 1931 | if !errors.Is(err, sentinel) { |
| 1932 | t.Fatalf("ObjectEach callback error mismatch: expected %v, got %v", sentinel, err) |
| 1933 | } |
| 1934 | }) |
| 1935 | } |
| 1936 | |
| 1937 | var testJson = []byte(`{ |
| 1938 | "name": "Name", |
nothing calls this directly
no test coverage detected
searching dependent graphs…