From 590b3acdae8f4adb34d96889fad483fafa880e93 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 10 Mar 2026 07:40:23 +0200 Subject: globalfilter: share compare-op symbol helper (task 374) --- internal/globalfilter/filter.go | 5 +++-- internal/globalfilter/filter_test.go | 20 ++++++++++++++++++++ internal/tui/tui.go | 21 +-------------------- 3 files changed, 24 insertions(+), 22 deletions(-) diff --git a/internal/globalfilter/filter.go b/internal/globalfilter/filter.go index aaac35b..d19e2aa 100644 --- a/internal/globalfilter/filter.go +++ b/internal/globalfilter/filter.go @@ -202,7 +202,7 @@ func appendNumericSummary(parts []string, name string, nf *NumericFilter, durati if duration { value = time.Duration(nf.Value).String() } - return append(parts, fmt.Sprintf("%s%s%s", name, compareOpSymbol(nf.Op), value)) + return append(parts, fmt.Sprintf("%s%s%s", name, CompareOpSymbol(nf.Op), value)) } func matchString(sf *StringFilter, value string) bool { @@ -256,7 +256,8 @@ func matchNumeric(nf *NumericFilter, value int64) bool { } } -func compareOpSymbol(op CompareOp) string { +// CompareOpSymbol returns the summary/render symbol for a numeric comparison operator. +func CompareOpSymbol(op CompareOp) string { switch op { case OpEq: return "=" diff --git a/internal/globalfilter/filter_test.go b/internal/globalfilter/filter_test.go index d081f7d..7d36c88 100644 --- a/internal/globalfilter/filter_test.go +++ b/internal/globalfilter/filter_test.go @@ -168,6 +168,26 @@ func TestFilterSummaryAndDurationParsing(t *testing.T) { } } +func TestCompareOpSymbol(t *testing.T) { + for _, tc := range []struct { + name string + op CompareOp + want string + }{ + {name: "eq", op: OpEq, want: "="}, + {name: "neq", op: OpNeq, want: "!="}, + {name: "gt", op: OpGt, want: ">"}, + {name: "gte", op: OpGte, want: ">="}, + {name: "lt", op: OpLt, want: "<"}, + {name: "lte", op: OpLte, want: "<="}, + {name: "unknown", op: CompareOp(99), want: "?"}, + } { + if got := CompareOpSymbol(tc.op); got != tc.want { + t.Fatalf("%s: CompareOpSymbol(%v) = %q, want %q", tc.name, tc.op, got, tc.want) + } + } +} + func TestFilterEqual(t *testing.T) { base := Filter{ Syscall: &StringFilter{Pattern: "read"}, diff --git a/internal/tui/tui.go b/internal/tui/tui.go index 22dbf37..4265cbb 100644 --- a/internal/tui/tui.go +++ b/internal/tui/tui.go @@ -989,7 +989,7 @@ func appendNumericFilterChange(parts []string, name string, prev, next *globalfi if duration { value = time.Duration(next.Value).String() } - return append(parts, fmt.Sprintf("%s%s%s", name, compareOpSymbol(next.Op), value)) + return append(parts, fmt.Sprintf("%s%s%s", name, globalfilter.CompareOpSymbol(next.Op), value)) } func sameStringFilter(a, b *globalfilter.StringFilter) bool { @@ -1009,25 +1009,6 @@ func sameNumericFilter(a, b *globalfilter.NumericFilter) bool { return a.Op == b.Op && a.Value == b.Value } -func compareOpSymbol(op globalfilter.CompareOp) string { - switch op { - case globalfilter.OpEq: - return "=" - case globalfilter.OpNeq: - return "!=" - case globalfilter.OpGt: - return ">" - case globalfilter.OpGte: - return ">=" - case globalfilter.OpLt: - return "<" - case globalfilter.OpLte: - return "<=" - default: - return "=" - } -} - func (m *Model) stopTrace() { if m.traceStop != nil { m.traceStop() -- cgit v1.2.3