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

Function TestObjectEach

parser_test.go:1880–1924  ·  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

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

Callers

nothing calls this directly

Calls 1

ObjectEachFunction · 0.85

Tested by

no test coverage detected