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