stardb/testing/rows_test.go

104 lines
2.1 KiB
Go
Raw Permalink Normal View History

2026-03-07 19:27:44 +08:00
package testing
import (
"testing"
)
func TestStarRows_Row(t *testing.T) {
db := setupTestDB(t)
defer db.Close()
rows, err := db.Query("SELECT * FROM users ORDER BY name")
if err != nil {
t.Fatalf("Query failed: %v", err)
}
defer rows.Close()
// Test first row
row := rows.Row(0)
name := row.MustString("name")
if name != "Alice" {
t.Errorf("Expected name 'Alice', got '%s'", name)
}
// Test out of bounds
row = rows.Row(999)
if len(row.Result()) != 0 {
t.Errorf("Expected empty result for out of bounds index")
}
}
func TestStarRows_Col(t *testing.T) {
db := setupTestDB(t)
defer db.Close()
rows, err := db.Query("SELECT * FROM users ORDER BY name")
if err != nil {
t.Fatalf("Query failed: %v", err)
}
defer rows.Close()
// Test column extraction
col := rows.Col("name")
names := col.MustString()
if len(names) != 3 {
t.Errorf("Expected 3 names, got %d", len(names))
}
if names[0] != "Alice" {
t.Errorf("Expected first name 'Alice', got '%s'", names[0])
}
// Test non-existent column
col = rows.Col("nonexistent")
if len(col.Result()) != 0 {
t.Errorf("Expected empty result for non-existent column")
}
}
func TestStarRows_Rescan(t *testing.T) {
db := setupTestDB(t)
defer db.Close()
db.ManualScan = true
rows, err := db.Query("SELECT * FROM users")
if err != nil {
t.Fatalf("Query failed: %v", err)
}
defer rows.Close()
err = rows.Rescan()
if err != nil {
t.Fatalf("Rescan failed: %v", err)
}
if rows.Length() != 3 {
t.Errorf("Expected 3 rows, got %d", rows.Length())
}
}
func TestStarRows_StringResult(t *testing.T) {
db := setupTestDB(t)
defer db.Close()
rows, err := db.Query("SELECT name, age FROM users WHERE name = ?", "Alice")
if err != nil {
t.Fatalf("Query failed: %v", err)
}
defer rows.Close()
if len(rows.StringResult()) != 1 {
t.Fatalf("Expected 1 string result, got %d", len(rows.StringResult()))
}
record := rows.StringResult()[0]
if record["name"] != "Alice" {
t.Errorf("Expected name 'Alice', got '%s'", record["name"])
}
if record["age"] != "25" {
t.Errorf("Expected age '25', got '%s'", record["age"])
}
}