--------------------------------------------------------------------------- Property: Set then Get returns the set value (round-trip) --------------------------------------------------------------------------- reqproof:proptest Set Verifies: SYS-REQ-009 [property]
(t *testing.T)
| 424 | // reqproof:proptest Set |
| 425 | // Verifies: SYS-REQ-009 [property] |
| 426 | func TestPropertySetRoundTrip(t *testing.T) { |
| 427 | r := newRNG(jsonSeed + 5) |
| 428 | const iterations = 500 |
| 429 | for i := 0; i < iterations; i++ { |
| 430 | // Start from an object (possibly empty) so Set has a target. |
| 431 | base := []byte(`{}`) |
| 432 | key := randKey(r) |
| 433 | setVal := []byte(strconv.FormatInt(r.Int63(), 10)) |
| 434 | out, err := Set(base, setVal, key) |
| 435 | if err != nil { |
| 436 | t.Fatalf("Set errored on key=%q val=%q base=%q: %v", key, setVal, base, err) |
| 437 | } |
| 438 | got, _, _, gerr := Get(out, key) |
| 439 | if gerr != nil { |
| 440 | t.Fatalf("Set→Get failed to find key=%q in output %q: %v", key, out, gerr) |
| 441 | } |
| 442 | if !bytes.Equal(got, setVal) { |
| 443 | t.Fatalf("Set→Get value mismatch on key=%q: got=%q want=%q (out=%q)", key, got, setVal, out) |
| 444 | } |
| 445 | } |
| 446 | } |
| 447 | |
| 448 | // --------------------------------------------------------------------------- |
| 449 | // Property: Delete is idempotent (Delete twice == Delete once) |