MCPcopy Create free account
hub / github.com/buger/jsonparser / TestObjectEach

Function TestObjectEach

parser_test.go:1881–1925  ·  view source on GitHub ↗

Verifies: SYS-REQ-031 [example] MCDC SYS-REQ-031: addressed_object_is_well_formed=F, malformed_object_input_returns_error=T => TRUE Verifies: SYS-REQ-030 [example] MCDC SYS-REQ-030: addressed_object_is_empty=T, addressed_object_is_well_formed=T, empty_object_produces_no_entries=T => TRUE Verifies: S

(t *testing.T)

Source from the content-addressed store, hash-verified

1879// MCDC SYS-REQ-007: addressed_object_is_empty=F, addressed_object_is_well_formed=T, object_callback_receives_entries=F => FALSE
1880// MCDC SYS-REQ-007: addressed_object_is_empty=F, addressed_object_is_well_formed=T, object_callback_receives_entries=T => TRUE
1881func TestObjectEach(t *testing.T) {
1882 for _, test := range objectEachTests {
1883 if activeTest != "" && test.desc != activeTest {
1884 continue
1885 }
1886
1887 // Execute ObjectEach and capture all of the entries visited, in order
1888 var entries []keyValueEntry
1889 err := ObjectEach([]byte(test.json), func(key, value []byte, valueType ValueType, off int) error {
1890 entries = append(entries, keyValueEntry{
1891 key: string(key),
1892 value: string(value),
1893 valueType: valueType,
1894 })
1895 return nil
1896 })
1897
1898 // Check the correctness of the result
1899 isErr := (err != nil)
1900 if test.isErr != isErr {
1901 // If the call didn't match the error expectation, fail
1902 t.Errorf("ObjectEach test '%s' isErr mismatch: expected %t, obtained %t (err %v)", test.desc, test.isErr, isErr, err)
1903 } else if isErr {
1904 // Else, if there was an expected error, don't fail and don't check anything further
1905 } else if len(test.entries) != len(entries) {
1906 t.Errorf("ObjectEach test '%s' mismatch in number of key-value entries: expected %d, obtained %d (entries found: %s)", test.desc, len(test.entries), len(entries), entries)
1907 } else {
1908 for i, entry := range entries {
1909 expectedEntry := test.entries[i]
1910 if expectedEntry.key != entry.key {
1911 t.Errorf("ObjectEach test '%s' key mismatch at entry %d: expected %s, obtained %s", test.desc, i, expectedEntry.key, entry.key)
1912 break
1913 } else if expectedEntry.value != entry.value {
1914 t.Errorf("ObjectEach test '%s' value mismatch at entry %d: expected %s, obtained %s", test.desc, i, expectedEntry.value, entry.value)
1915 break
1916 } else if expectedEntry.valueType != entry.valueType {
1917 t.Errorf("ObjectEach test '%s' value type mismatch at entry %d: expected %s, obtained %s", test.desc, i, expectedEntry.valueType, entry.valueType)
1918 break
1919 } else {
1920 // Success for this entry
1921 }
1922 }
1923 }
1924 }
1925}
1926
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

Callers

nothing calls this directly

Calls 1

ObjectEachFunction · 0.85

Tested by

no test coverage detected