From 377d14081ac754e4c0f01b13d552d55757b12043 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kuba=20Podg=C3=B3rski?= Date: Thu, 13 Feb 2020 10:34:40 +0100 Subject: [PATCH] Add extra Clear test (check if existency column bit is set) --- executor_test.go | 46 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/executor_test.go b/executor_test.go index a280be964..04346dc1e 100644 --- a/executor_test.go +++ b/executor_test.go @@ -675,6 +675,52 @@ func TestExecutor_Execute_Clear(t *testing.T) { t.Fatalf("expected column changed") } }) + + t.Run("RowKeyColumnKey_NotClearNot", func(t *testing.T) { + writeQuery := `Set("one", f="ten")` + readQueries := []string{ + `Not(Row(f="whatever"))`, + `Clear("one", f="whatever")`, + `Not(Row(f="whatever")) `, + `Clear("one", f="ten")`, + `Not(Row(f="whatever")) `, + } + results := []interface{}{ + "one", + false, + "one", + true, + "one", + } + + responses := runCallTest(t, writeQuery, readQueries, &pilosa.IndexOptions{ + Keys: true, + TrackExistence: true, + }, pilosa.OptFieldKeys()) + for i, resp := range responses { + if len(resp.Results) != 1 { + t.Fatalf("response %d: len(results) expected: 1, got: %d", i, len(resp.Results)) + } + + switch r := resp.Results[0].(type) { + case bool: + if results[i] != r { + t.Fatalf("response %d: expected: %v, got: %v", i, results[i], r) + } + + case *pilosa.Row: + if len(r.Keys) != 1 { + t.Fatalf("response %d: len(keys) expected: 1, got: %d", i, len(r.Keys)) + } + if results[i] != r.Keys[0] { + t.Fatalf("response %d: expected: %v, got: %v", i, results[i], r.Keys[0]) + } + + default: + t.Fatalf("response %d: expected: %T, got: %T", i, results[i], r) + } + } + }) } // Ensure a set query can be executed on a bool field.