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