104 lines
2.1 KiB
Go
104 lines
2.1 KiB
Go
|
|
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"])
|
||
|
|
}
|
||
|
|
}
|