1package tablesort23import (4 "net/url"5 "strings"6 "testing"7)89func TestRender(t *testing.T) {10 // --- Case 1: Testing Render with a Table with "Role" column sorted descending and param prefix "members-"11 table := &Table{12 Headings: []string{"Tier", "Member", "Role"},13 Rows: [][]string{14 {"T1", "g11111", "finance-officer"},15 {"T2", "g22222", "developer"},16 {"T3", "g33333", "developer"},17 },18 }1920 u, _ := url.Parse("/test?members-sort-desc=Tier")21 md := Render(u, table, "members-")2223 expected := "| [Tier ↓](/test?members-sort-asc=Tier) | [Member](/test?members-sort-desc=Member) | [Role](/test?members-sort-desc=Role) |\n" +24 "| --- | --- | --- |\n" +25 "| T3 | g33333 | developer |\n" +26 "| T2 | g22222 | developer |\n" +27 "| T1 | g11111 | finance-officer |\n"2829 // Trim spaces for comparison30 md = strings.TrimSpace(md)31 expected = strings.TrimSpace(expected)3233 if md != expected {34 t.Errorf("Render() output mismatch.\nExpected:\n%s\nGot:\n%s", expected, md)35 }3637 // --- Case 2: Testing Render with an invalid Table (row with missing cell)38 table = &Table{39 Headings: []string{"Tier", "Member", "Role"},40 Rows: [][]string{41 {"T1", "g11111"}, // Missing the "Role" cell42 },43 }4445 md = Render(u, table, "")46 expected = "tablesort fails: row 1 has 2 cells, expected 3, because there are 3 columns.\n"4748 if md != expected {49 t.Errorf("Expected error message:\n%s\nGot:\n%s", expected, md)50 }5152 // --- Case 3: Testing SortRows53 rows := [][]string{54 {"T1", "g11111", "finance-officer"},55 {"T2", "g22222", "developer"},56 {"T3", "g33333", "developer"},57 }5859 SortRows(rows, 2, false) // Sort by "Role" descending60 expected = "finance-officer"6162 if rows[0][2] != expected {63 t.Errorf("SortRows() failed. Expected first role: %s, got: %s", expected, rows[0][2])64 }65}66Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.