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)
| 1927 | // Verifies: SYS-REQ-032 [boundary] |
| 1928 | // MCDC SYS-REQ-032: addressed_object_is_well_formed=T, object_callback_returns_error=T, object_callback_error_is_returned=T => TRUE |
| 1929 | func TestObjectEachNestedPathAndCallbackError(t *testing.T) { |
| 1930 | t.Run("nested object path", func(t *testing.T) { |
| 1931 | var entries []keyValueEntry |
| 1932 | err := ObjectEach([]byte(`{"outer":{"a":1,"b":true}}`), func(key, value []byte, valueType ValueType, off int) error { |
| 1933 | entries = append(entries, keyValueEntry{ |
| 1934 | key: string(key), |
| 1935 | value: string(value), |
| 1936 | valueType: valueType, |
| 1937 | }) |
| 1938 | return nil |
| 1939 | }, "outer") |
| 1940 | if err != nil { |
| 1941 | t.Fatalf("ObjectEach nested path returned error: %v", err) |
| 1942 | } |
| 1943 | expected := []keyValueEntry{ |
| 1944 | {key: "a", value: "1", valueType: Number}, |
| 1945 | {key: "b", value: "true", valueType: Boolean}, |
| 1946 | } |
| 1947 | if !reflect.DeepEqual(expected, entries) { |
| 1948 | t.Fatalf("ObjectEach nested path entries mismatch: expected %#v, got %#v", expected, entries) |
| 1949 | } |
| 1950 | }) |
| 1951 | |
| 1952 | t.Run("callback error is returned", func(t *testing.T) { |
| 1953 | sentinel := errors.New("stop iteration") |
| 1954 | err := ObjectEach([]byte(`{"a":1}`), func(key, value []byte, valueType ValueType, off int) error { |
| 1955 | return sentinel |
| 1956 | }) |
| 1957 | if !errors.Is(err, sentinel) { |
| 1958 | t.Fatalf("ObjectEach callback error mismatch: expected %v, got %v", sentinel, err) |
| 1959 | } |
| 1960 | }) |
| 1961 | } |
| 1962 | |
| 1963 | var testJson = []byte(`{ |
| 1964 | "name": "Name", |
nothing calls this directly
no test coverage detected