[Groonga-commit] groonga/grngo at b12600b [master] Add a test for table reference _key and _value.

Zurück zum Archiv-Index

susumu.yata null+****@clear*****
Thu Jul 30 11:40:58 JST 2015


susumu.yata	2015-07-30 11:40:58 +0900 (Thu, 30 Jul 2015)

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

  Message:
    Add a test for table reference _key and _value.

  Modified files:
    grngo_test.go

  Modified: grngo_test.go (+83 -0)
===================================================================
--- grngo_test.go    2015-07-30 11:15:26 +0900 (e4fd8f0)
+++ grngo_test.go    2015-07-30 11:40:58 +0900 (25ebb8b)
@@ -387,6 +387,89 @@ func TestKeyValue(t *testing.T) {
 	}
 }
 
+func testRefKeyValue(t *testing.T, db *DB, depth int, keyType string) bool {
+	for i := depth; i > 0; i-- {
+		tableName := fmt.Sprintf("Table%d", i)
+		options := NewTableOptions()
+		options.KeyType = keyType
+		_, err := db.CreateTable(tableName, options)
+		if err != nil {
+			t.Log("DB.CreateTable() failed: %v", err)
+			return false
+		}
+		defer db.Query(fmt.Sprintf("table_remove %s", tableName))
+	}
+	options := NewTableOptions()
+	options.KeyType = "Table1"
+	options.ValueType = "Table1"
+	table, err := db.CreateTable("Table", options)
+	if err != nil {
+		t.Log("DB.CreateTable() failed: %v", err)
+		return false
+	}
+	defer db.Query("table_remove Table")
+	keyColumn, err := table.FindColumn("_key")
+	if err != nil {
+		t.Log("Table.FindColumn() failed: %v", err)
+		return false
+	}
+	valueColumn, err := table.FindColumn("_value")
+	if err != nil {
+		t.Logf("Table.FindColumn() failed: %v", err)
+		return false
+	}
+	for i := 0; i < 100; i++ {
+		key := generateRandomKey(keyType)
+		_, id, err := table.InsertRow(key)
+		if err != nil {
+			t.Logf("Table.InsertRow() failed: %v", err)
+			return false
+		}
+		storedKey, err := keyColumn.GetValue(id)
+		if err != nil {
+			t.Logf("Column.GetValue() failed: %v", err)
+			return false
+		}
+		if !reflect.DeepEqual(key, storedKey) {
+			t.Log("DeepEqual() failed")
+			return false
+		}
+		value := generateRandomValue(keyType)
+		if err := valueColumn.SetValue(id, value); err != nil {
+			t.Logf("Column.SetValue() failed: %v", err)
+			return false
+		}
+		storedValue, err := valueColumn.GetValue(id)
+		if err != nil {
+			t.Logf("Column.GetValue() failed: %v", err)
+			return false
+		}
+		if !reflect.DeepEqual(value, storedValue) {
+			t.Log("DeepEqual() failed")
+			return false
+		}
+	}
+	return true
+}
+
+func TestRefKeyValue(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",
+	}
+	maxDepth := 3
+	for depth := 1; depth <= maxDepth; depth++ {
+		for _, keyType := range keyTypes {
+			if !testRefKeyValue(t, db, depth, keyType) {
+				t.Logf("[ fail ] depth = %d, keyType = \"%s\"", depth, keyType)
+				t.Fail()
+			}
+		}
+	}
+}
+
 func testDBCreateTableWithRefKey(t *testing.T, keyType string) {
 	options := NewTableOptions()
 	options.KeyType = keyType
-------------- next part --------------
HTML����������������������������...
Download 



More information about the Groonga-commit mailing list
Zurück zum Archiv-Index