From b53b014b54cd132f48d13efb93771bbedd07e06d Mon Sep 17 00:00:00 2001 From: Jack Christensen Date: Sat, 29 Jun 2013 12:39:34 -0500 Subject: [PATCH] DRY tests --- connection_test.go | 127 +++++++++++----------------------------- data_row_reader_test.go | 98 +++++++------------------------ 2 files changed, 56 insertions(+), 169 deletions(-) diff --git a/connection_test.go b/connection_test.go index c21df7bb..3d5f1d5e 100644 --- a/connection_test.go +++ b/connection_test.go @@ -204,107 +204,50 @@ func TestSelectRow(t *testing.T) { func TestConnectionSelectValue(t *testing.T) { conn := getSharedConnection() - var v interface{} - var err error - v, err = conn.SelectValue("select null") - if err != nil { - t.Errorf("Unable to select null: %v", err) - } else { - if v != nil { - t.Errorf("Expected: nil, recieved: %v", v) + test := func(sql string, expected interface{}) { + v, err := conn.SelectValue(sql) + if err != nil { + t.Errorf("%v while running %v", err, sql) + } else { + if v != expected { + t.Errorf("Expected: %#v Received: %#v", expected, v) + } } } - v, err = conn.SelectValue("select 'foo'") - if err != nil { - t.Errorf("Unable to select string: %v", err) - } else { - s, ok := v.(string) - if !(ok && s == "foo") { - t.Errorf("Expected: foo, recieved: %#v", v) - } - } - - v, err = conn.SelectValue("select true") - if err != nil { - t.Errorf("Unable to select bool: %#v", err) - } else { - s, ok := v.(bool) - if !(ok && s == true) { - t.Errorf("Expected true, received: %#v", v) - } - } - - v, err = conn.SelectValue("select false") - if err != nil { - t.Errorf("Unable to select bool: %v", err) - } else { - s, ok := v.(bool) - if !(ok && s == false) { - t.Errorf("Expected false, received: %#v", v) - } - } - - v, err = conn.SelectValue("select 1::int2") - if err != nil { - t.Errorf("Unable to select int2: %v", err) - } else { - s, ok := v.(int16) - if !(ok && s == 1) { - t.Errorf("Expected 1, received: %#v", v) - } - } - - v, err = conn.SelectValue("select 1::int4") - if err != nil { - t.Errorf("Unable to select int4: %v", err) - } else { - s, ok := v.(int32) - if !(ok && s == 1) { - t.Errorf("Expected 1, received: %#v", v) - } - } - - v, err = conn.SelectValue("select 1::int8") - if err != nil { - t.Errorf("Unable to select int8: %#v", err) - } else { - s, ok := v.(int64) - if !(ok && s == 1) { - t.Errorf("Expected 1, received: %#v", v) - } - } - - v, err = conn.SelectValue("select 1.23::float4") - if err != nil { - t.Errorf("Unable to select float4: %#v", err) - } else { - s, ok := v.(float32) - if !(ok && s == float32(1.23)) { - t.Errorf("Expected 1.23, received: %#v", v) - } - } + test("select 'foo'", "foo") + test("select true", true) + test("select false", false) + test("select 1::int2", int16(1)) + test("select 1::int4", int32(1)) + test("select 1::int8", int64(1)) + test("select 1.23::float4", float32(1.23)) + test("select 1.23::float8", float64(1.23)) } func TestSelectValues(t *testing.T) { conn := getSharedConnection() - var values []interface{} - var err error - values, err = conn.SelectValues("select * from (values ('Matthew'), ('Mark'), ('Luke'), ('John')) t") - if err != nil { - t.Fatalf("Unable to select all strings: %v", err) - } - if values[0].(string) != "Matthew" || values[1].(string) != "Mark" || values[2].(string) != "Luke" || values[3].(string) != "John" { - t.Error("Received incorrect strings") + test := func(sql string, expected []interface{}) { + values, err := conn.SelectValues(sql) + if err != nil { + t.Errorf("%v while running %v", err, sql) + return + } + if len(values) != len(expected) { + t.Errorf("Expected: %#v Received: %#v", expected, values) + return + } + for i := 0; i < len(values); i++ { + if values[i] != expected[i] { + t.Errorf("Expected: %#v Received: %#v", expected, values) + return + } + } } - values, err = conn.SelectValues("select * from (values ('Matthew'), (null)) t") - if err != nil { - t.Fatalf("Unable to select values including a null: %v", err) - } - if values[0].(string) != "Matthew" || values[1] != nil { - t.Error("Received incorrect strings") - } + test("select * from (values ('Matthew'), ('Mark'), ('Luke'), ('John')) t", []interface{}{"Matthew", "Mark", "Luke", "John"}) + test("select * from (values ('Matthew'), (null)) t", []interface{}{"Matthew", nil}) + test("select * from (values (1::int4), (2::int4), (null), (3::int4)) t", []interface{}{int32(1), int32(2), nil, int32(3)}) } diff --git a/data_row_reader_test.go b/data_row_reader_test.go index a7d79bc6..23c21f42 100644 --- a/data_row_reader_test.go +++ b/data_row_reader_test.go @@ -6,87 +6,31 @@ import ( func TestDataRowReaderReadValue(t *testing.T) { conn := getSharedConnection() - var v interface{} - var err error - onDataRow := func(r *DataRowReader) error { - v = r.ReadValue() - return nil - } + test := func(sql string, expected interface{}) { + var v interface{} - err = conn.SelectFunc("select null", onDataRow) - if err != nil { - t.Fatalf("Select failed: %v", err) - } - if v != nil { - t.Errorf("Wrong value returned: %v", v) - } + onDataRow := func(r *DataRowReader) error { + v = r.ReadValue() + return nil + } - err = conn.SelectFunc("select 'Jack'", onDataRow) - if err != nil { - t.Fatalf("Select failed: %v", err) - } - if typedValue, _ := v.(string); typedValue != "Jack" { - t.Errorf("Wrong value returned: %v", typedValue) - } - - err = conn.SelectFunc("select true", onDataRow) - if err != nil { - t.Errorf("Unable to select bool: %#v", err) - } else { - s, ok := v.(bool) - if !(ok && s == true) { - t.Errorf("Expected true, received: %#v", v) + err := conn.SelectFunc(sql, onDataRow) + if err != nil { + t.Fatalf("Select failed: %v", err) + } + if v != expected { + t.Errorf("Expected: %#v Received: %#v", expected, v) } } - err = conn.SelectFunc("select false", onDataRow) - if err != nil { - t.Errorf("Unable to select bool: %v", err) - } else { - s, ok := v.(bool) - if !(ok && s == false) { - t.Errorf("Expected false, received: %#v", v) - } - } - - err = conn.SelectFunc("select 1::int2", onDataRow) - if err != nil { - t.Errorf("Unable to select int2: %v", err) - } else { - s, ok := v.(int16) - if !(ok && s == 1) { - t.Errorf("Expected 1, received: %#v", v) - } - } - - err = conn.SelectFunc("select 1::int4", onDataRow) - if err != nil { - t.Errorf("Unable to select int4: %v", err) - } else { - s, ok := v.(int32) - if !(ok && s == 1) { - t.Errorf("Expected 1, received: %#v", v) - } - } - - err = conn.SelectFunc("select 1::int8", onDataRow) - if err != nil { - t.Errorf("Unable to select int8: %#v", err) - } else { - s, ok := v.(int64) - if !(ok && s == 1) { - t.Errorf("Expected 1, received: %#v", v) - } - } - - err = conn.SelectFunc("select 1.23::float4", onDataRow) - if err != nil { - t.Errorf("Unable to select float4: %#v", err) - } else { - s, ok := v.(float32) - if !(ok && s == float32(1.23)) { - t.Errorf("Expected 1.23, received: %#v", v) - } - } + test("select null", nil) + test("select 'Jack'", "Jack") + test("select true", true) + test("select false", false) + test("select 1::int2", int16(1)) + test("select 1::int4", int32(1)) + test("select 1::int8", int64(1)) + test("select 1.23::float4", float32(1.23)) + test("select 1.23::float8", float64(1.23)) }