MCPcopy Create free account
hub / github.com/codechenx/FastTableViewer / TestMultiColumnFilter

Function TestMultiColumnFilter

multifilter_test.go:7–104  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

5)
6
7func TestMultiColumnFilter(t *testing.T) {
8 // Create test data
9 data := [][]string{
10 {"Name", "Age", "City", "Department"},
11 {"Alice", "30", "New York", "Engineering"},
12 {"Bob", "25", "San Francisco", "Sales"},
13 {"Charlie", "35", "New York", "Engineering"},
14 {"David", "28", "Chicago", "Marketing"},
15 {"Eve", "32", "New York", "Sales"},
16 {"Frank", "45", "San Francisco", "Engineering"},
17 }
18
19 b, err := createNewBufferWithData(data, true)
20 if err != nil {
21 t.Fatalf("Failed to create buffer: %v", err)
22 }
23 b.rowFreeze = 1
24
25 t.Run("Apply single filter", func(t *testing.T) {
26 // Filter by City = "New York"
27 filtered := b.filterByColumn(2, FilterOptions{Query: "New York", Operator: "equals"})
28
29 // Should have header + 3 data rows
30 expected := 4 // 1 header + 3 matching rows
31 if filtered.rowLen != expected {
32 t.Errorf("Expected %d rows, got %d", expected, filtered.rowLen)
33 }
34 })
35
36 t.Run("Apply multiple filters sequentially", func(t *testing.T) {
37 // First filter by City = "New York"
38 filtered1 := b.filterByColumn(2, FilterOptions{Query: "New York", Operator: "equals"})
39
40 // Then filter by Department = "Engineering"
41 filtered2 := filtered1.filterByColumn(3, FilterOptions{Query: "Engineering", Operator: "equals"})
42
43 // Should have header + 2 data rows (Alice and Charlie)
44 expected := 3 // 1 header + 2 matching rows
45 if filtered2.rowLen != expected {
46 t.Errorf("Expected %d rows, got %d", expected, filtered2.rowLen)
47 }
48
49 // Verify the correct rows remain
50 if filtered2.cont[1][0] != "Alice" {
51 t.Errorf("Expected Alice in row 1, got %s", filtered2.cont[1][0])
52 }
53 if filtered2.cont[2][0] != "Charlie" {
54 t.Errorf("Expected Charlie in row 2, got %s", filtered2.cont[2][0])
55 }
56 })
57
58 t.Run("Apply three filters", func(t *testing.T) {
59 // Filter by City = "New York"
60 filtered1 := b.filterByColumn(2, FilterOptions{Query: "New York", Operator: "equals"})
61
62 // Filter by Department containing "Eng"
63 filtered2 := filtered1.filterByColumn(3, FilterOptions{Query: "Eng", Operator: "contains"})
64

Callers

nothing calls this directly

Calls 3

createNewBufferWithDataFunction · 0.85
filterByColumnMethod · 0.80
detectAllColumnTypesMethod · 0.80

Tested by

no test coverage detected