[Groonga-commit] groonga/grngo at b9d38b2 [master] Integrate tests for reference columns.

Back to archive index

susumu.yata null+****@clear*****
Fri Jul 31 14:50:07 JST 2015


susumu.yata	2015-07-31 14:50:07 +0900 (Fri, 31 Jul 2015)

  New Revision: b9d38b23cd585d46504951ba430d50de608250e0
  https://github.com/groonga/grngo/commit/b9d38b23cd585d46504951ba430d50de608250e0

  Message:
    Integrate tests for reference columns.
    
    Tests for unsupported combinations are disabled.

  Modified files:
    grngo_test.go

  Modified: grngo_test.go (+60 -131)
===================================================================
--- grngo_test.go    2015-07-31 14:47:33 +0900 (b852b62)
+++ grngo_test.go    2015-07-31 14:50:07 +0900 (b51727a)
@@ -512,145 +512,74 @@ func TestColumn(t *testing.T) {
 	}
 }
 
-func testTableCreateRefColumn(t *testing.T, keyType string) {
-	valueType := "Table"
-	if strings.HasPrefix(keyType, "[]") {
-		keyType = keyType[2:]
-		valueType = "[]Table"
-	}
+func testRefColumn(t *testing.T, db *DB, keyType, refType string) bool {
+	// Create a referred table.
 	options := NewTableOptions()
 	options.KeyType = keyType
-	dirPath, _, db, table, _ :=
-		createTempColumn(t, "Table", options, "Value", valueType, nil)
-	defer removeTempDB(t, dirPath, db)
-
-	if column, err := table.FindColumn("Value"); err != nil {
-		t.Fatalf("Table.FindColumn() failed: %v", err)
-	} else {
-		t.Logf("Value: %+v", column)
+	_, err := db.CreateTable("Table", options)
+	if err != nil {
+		t.Log("DB.CreateTable() failed:", err)
+		return false
 	}
-	if column, err := table.FindColumn("Value._id"); err != nil {
-		t.Fatalf("Table.FindColumn() failed: %v", err)
-	} else {
-		t.Logf("Value._id: %+v", column)
+	defer db.Query("table_remove Table")
+
+	// Create a referrer table.
+	refTable, err := db.CreateTable("RefTable", nil)
+	if err != nil {
+		t.Log("DB.CreateTable() failed:", err)
+		return false
 	}
-	if column, err := table.FindColumn("Value._key"); err != nil {
-		t.Fatalf("Table.FindColumn() failed: %v", err)
-	} else {
-		t.Logf("Value._key: %+v", column)
+	defer db.Query("table_remove RefTable")
+	refColumn, err := refTable.CreateColumn("Ref", refType, nil)
+	if err != nil {
+		t.Log("Table.CreateColumn() failed:", err)
+		return false
 	}
-}
-
-func TestTableCreateColumnForRefToBool(t *testing.T) {
-	testTableCreateRefColumn(t, "Bool")
-}
-
-func TestTableCreateColumnForRefToInt8(t *testing.T) {
-	testTableCreateRefColumn(t, "Int8")
-}
-
-func TestTableCreateColumnForRefToInt16(t *testing.T) {
-	testTableCreateRefColumn(t, "Int16")
-}
-
-func TestTableCreateColumnForRefToInt32(t *testing.T) {
-	testTableCreateRefColumn(t, "Int32")
-}
-
-func TestTableCreateColumnForRefToInt64(t *testing.T) {
-	testTableCreateRefColumn(t, "Int64")
-}
-
-func TestTableCreateColumnForRefToUInt8(t *testing.T) {
-	testTableCreateRefColumn(t, "UInt8")
-}
-
-func TestTableCreateColumnForRefToUInt16(t *testing.T) {
-	testTableCreateRefColumn(t, "UInt16")
-}
-
-func TestTableCreateColumnForRefToUInt32(t *testing.T) {
-	testTableCreateRefColumn(t, "UInt32")
-}
-
-func TestTableCreateColumnForRefToUInt64(t *testing.T) {
-	testTableCreateRefColumn(t, "UInt64")
-}
-
-func TestTableCreateColumnForRefToFloat(t *testing.T) {
-	testTableCreateRefColumn(t, "Float")
-}
-
-func TestTableCreateColumnForRefToTime(t *testing.T) {
-	testTableCreateRefColumn(t, "Time")
-}
-
-func TestTableCreateColumnForRefToShortText(t *testing.T) {
-	testTableCreateRefColumn(t, "ShortText")
-}
-
-func TestTableCreateColumnForRefToTokyoGeoPoint(t *testing.T) {
-	testTableCreateRefColumn(t, "TokyoGeoPoint")
-}
-
-func TestTableCreateColumnForRefToWGS84GeoPoint(t *testing.T) {
-	testTableCreateRefColumn(t, "WGS84GeoPoint")
-}
-
-func TestTableCreateColumnForRefToBoolVector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Bool")
-}
-
-func TestTableCreateColumnForRefToInt8Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Int8")
-}
+	valueType := strings.Replace(refType, "Table", keyType, 1)
 
-func TestTableCreateColumnForRefToInt16Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Int16")
-}
-
-func TestTableCreateColumnForRefToInt32Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Int32")
-}
-
-func TestTableCreateColumnForRefToInt64Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Int64")
-}
-
-func TestTableCreateColumnForRefToUInt8Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]UInt8")
-}
-
-func TestTableCreateColumnForRefToUInt16Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]UInt16")
-}
-
-func TestTableCreateColumnForRefToUInt32Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]UInt32")
-}
-
-func TestTableCreateColumnForRefToUInt64Vector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]UInt64")
-}
-
-func TestTableCreateColumnForRefToFloatVector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Float")
-}
-
-func TestTableCreateColumnForRefToTimeVector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]Time")
-}
-
-func TestTableCreateColumnForRefToShortTextVector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]ShortText")
-}
-
-func TestTableCreateColumnForRefToTokyoGeoPointVector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]TokyoGeoPoint")
+	for i := 0; i < 10; i++ {
+		_, id, err := refTable.InsertRow(nil)
+		if err != nil {
+			t.Log("Table.InsertRow() failed:", err)
+			return false
+		}
+		value := generateRandomValue(valueType)
+		if err := refColumn.SetValue(id, value); err != nil {
+			t.Log("Column.SetValue() failed:", err)
+			return false
+		}
+		storedValue, err := refColumn.GetValue(id)
+		if err != nil {
+			t.Log("Column.GetValue() failed:", err)
+			return false
+		}
+		if !reflect.DeepEqual(value, storedValue) {
+			t.Logf("DeepEqual() failed: value = %v, storedValue = %v",
+				value, storedValue)
+			return false
+		}
+	}
+	return true
 }
 
-func TestTableCreateColumnForRefToWGS84GeoPointVector(t *testing.T) {
-	testTableCreateRefColumn(t, "[]WGS84GeoPoint")
+func TestRefColumn(t *testing.T) {
+	dirPath, _, db := createTempDB(t)
+	defer removeTempDB(t, dirPath, db)
+	keyTypes := []string{
+		"Bool", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", "UInt32",
+		"UInt64", "Float", "Time", "ShortText",
+//		"TokyoGeoPoint", "WGS84GeoPoint",
+	}
+	refTypes := []string{ "Table" }
+//	refTypes := []string{ "Table", "[]Table" }
+	for _, keyType := range keyTypes {
+		for _, refType := range refTypes {
+			if !testRefColumn(t, db, keyType, refType) {
+				t.Logf("[ fail ] keyType = \"%s\", refType = \"%s\"", keyType, refType)
+				t.Fail()
+			}
+		}
+	}
 }
 
 func TestInvalidRows(t *testing.T) {
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Back to archive index