package db import ( "database/sql" "testing" ) func TestNullStrPtr(t *testing.T) { tests := []struct { name string input sql.NullString wantNil bool wantVal string }{ { name: "valid string", input: sql.NullString{String: "hello", Valid: true}, wantNil: false, wantVal: "hello", }, { name: "invalid (nil)", input: sql.NullString{Valid: false}, wantNil: true, }, { name: "valid empty string", input: sql.NullString{String: "", Valid: true}, wantNil: false, wantVal: "", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := nullStrPtr(tt.input) if tt.wantNil { if got != nil { t.Errorf("nullStrPtr() = %v, want nil", got) } return } if got == nil { t.Fatal("nullStrPtr() = nil, want non-nil pointer") } if *got != tt.wantVal { t.Errorf("nullStrPtr() = %q, want %q", *got, tt.wantVal) } }) } } func TestNullStrVal(t *testing.T) { tests := []struct { name string input sql.NullString want string }{ { name: "valid string", input: sql.NullString{String: "world", Valid: true}, want: "world", }, { name: "invalid (nil)", input: sql.NullString{Valid: false}, want: "", }, { name: "valid empty string", input: sql.NullString{String: "", Valid: true}, want: "", }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := nullStrVal(tt.input) if got != tt.want { t.Errorf("nullStrVal() = %q, want %q", got, tt.want) } }) } } func TestNullIntPtr(t *testing.T) { tests := []struct { name string input sql.NullInt64 wantNil bool wantVal int }{ { name: "valid int", input: sql.NullInt64{Int64: 42, Valid: true}, wantNil: false, wantVal: 42, }, { name: "invalid (nil)", input: sql.NullInt64{Valid: false}, wantNil: true, }, { name: "valid zero", input: sql.NullInt64{Int64: 0, Valid: true}, wantNil: false, wantVal: 0, }, { name: "valid negative", input: sql.NullInt64{Int64: -100, Valid: true}, wantNil: false, wantVal: -100, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := nullIntPtr(tt.input) if tt.wantNil { if got != nil { t.Errorf("nullIntPtr() = %v, want nil", got) } return } if got == nil { t.Fatal("nullIntPtr() = nil, want non-nil pointer") } if *got != tt.wantVal { t.Errorf("nullIntPtr() = %d, want %d", *got, tt.wantVal) } }) } }