Susumu Yata
null+****@clear*****
Thu Sep 14 17:27:46 JST 2017
Susumu Yata 2017-09-14 17:27:46 +0900 (Thu, 14 Sep 2017) New Revision: 93813ad84cf01fd8ec3bd928cef9f2217d775d40 https://github.com/groonga/grnci/commit/93813ad84cf01fd8ec3bd928cef9f2217d775d40 Message: Add tests for DB.ColumnCreate. Ref: #39 Modified files: v2/libgrn/db_test.go Modified: v2/libgrn/db_test.go (+148 -2) =================================================================== --- v2/libgrn/db_test.go 2017-09-14 16:37:55 +0900 (b533522) +++ v2/libgrn/db_test.go 2017-09-14 17:27:46 +0900 (2bca2ca) @@ -116,8 +116,8 @@ func TestDBColumnCreate(t *testing.T) { if err := db.ColumnCreate("Tbl.col", "Text", nil); err != nil { t.Fatalf("db.ColumnCreate failed: %v", err) } - if ok, err := db.ObjectExist("Tbl.col"); !ok { - t.Fatalf("db.ObjectExist failed: %v", err) + if err := db.ColumnRemove("Tbl.col"); err != nil { + t.Fatalf("db.ColumnRemove failed: %v", err) } } @@ -131,6 +131,152 @@ func TestDBColumnCreateInvalidTable(t *testing.T) { } } +func TestDBColumnCreateData(t *testing.T) { + db, dir := makeDB(t) + defer removeDB(db, dir) + + dump := `table_create Tbl TABLE_NO_KEY` + if _, err := db.Restore(strings.NewReader(dump), nil, true); err != nil { + t.Fatalf("db.Restore failed: %v", err) + } + typePrefixes := []string{"", "[]"} + types := []string{ + "Bool", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", + "UInt32", "UInt64", "Time", "Float", "ShortText", "Text", "LongText", + "TokyoGeoPoint", "WGS84GeoPoint", + } + for _, typePrefix := range typePrefixes { + flags := [][]string{[]string{}} + if typePrefix == "[]" { + flags = append(flags, []string{"WITH_WEIGHT"}) + } + for _, flags := range flags { + for _, typ := range types { + if err := db.ColumnCreate("Tbl.col", typePrefix+typ, flags); err != nil { + t.Fatalf("db.ColumnCreate failed: %v", err) + } + if err := db.ColumnRemove("Tbl.col"); err != nil { + t.Fatalf("db.ColumnRemove failed: %v", err) + } + } + } + } +} + +func TestDBColumnCreateRef(t *testing.T) { + db, dir := makeDB(t) + defer removeDB(db, dir) + + dump := `table_create Tbl TABLE_NO_KEY` + if _, err := db.Restore(strings.NewReader(dump), nil, true); err != nil { + t.Fatalf("db.Restore failed: %v", err) + } + typePrefixes := []string{"", "[]"} + keyTypes := []string{ + "Bool", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", + "UInt32", "UInt64", "Time", "Float", "ShortText", "TokyoGeoPoint", + "WGS84GeoPoint", + } + for _, typePrefix := range typePrefixes { + flags := [][]string{[]string{}} + if typePrefix == "[]" { + flags = append(flags, []string{"WITH_WEIGHT"}) + } + for _, flags := range flags { + for _, keyType := range keyTypes { + options := grnci.NewDBTableCreateOptions() + options.KeyType = keyType + if err := db.TableCreate("Tbl2", options); err != nil { + t.Fatalf("db.TableCreate failed: %v", err) + } + if err := db.ColumnCreate("Tbl.col", typePrefix+"Tbl2", flags); err != nil { + t.Fatalf("db.ColumnCreate failed: %v", err) + } + if err := db.ColumnRemove("Tbl.col"); err != nil { + t.Fatalf("db.ColumnRemove failed: %v", err) + } + if err := db.TableRemove("Tbl2", false); err != nil { + t.Fatalf("db.TableRemove failed: %v", err) + } + } + } + } +} + +func TestDBColumnCreateIndex(t *testing.T) { + db, dir := makeDB(t) + defer removeDB(db, dir) + + dump := `table_create Tbl TABLE_NO_KEY` + if _, err := db.Restore(strings.NewReader(dump), nil, true); err != nil { + t.Fatalf("db.Restore failed: %v", err) + } + typePrefixes := []string{"", "[]"} + types := []string{ + "Bool", "Int8", "Int16", "Int32", "Int64", "UInt8", "UInt16", + "UInt32", "UInt64", "Time", "Float", "ShortText", "Text", "LongText", + "TokyoGeoPoint", "WGS84GeoPoint", + } + sizeFlags := []string{"", "INDEX_SMALL", "INDEX_MEDIUM"} + for _, typePrefix := range typePrefixes { + dataFlags := [][]string{[]string{}} + posFlags := []string{""} + if typePrefix == "[]" { + dataFlags = append(dataFlags, []string{"WITH_WEIGHT"}) + posFlags = append(posFlags, "WITH_POSITION") + } + for _, dataFlags := range dataFlags { + for _, typ := range types { + if err := db.ColumnCreate("Tbl.col", typePrefix+typ, dataFlags); err != nil { + t.Fatalf("db.ColumnCreate failed: %v", err) + } + options := grnci.NewDBTableCreateOptions() + switch typ { + case "Text", "LongText": + options.KeyType = "ShortText" + options.DefaultTokenizer = "TokenBigram" + options.Normalizer = "NormalizerAuto" + default: + options.KeyType = typ + } + if err := db.TableCreate("Tbl2", options); err != nil { + t.Fatalf("db.TableCreate failed: %v", err) + } + var indexFlags [][]string + for _, posFlag := range posFlags { + for _, sizeFlag := range sizeFlags { + var flags []string + if typePrefix == "[]" && options.DefaultTokenizer != "" { + flags = append(flags, "WITH_SECTION") + } + if posFlag != "" { + flags = append(flags, posFlag) + } + if sizeFlag != "" { + flags = append(flags, sizeFlag) + } + indexFlags = append(indexFlags, flags) + } + } + for _, indexFlags := range indexFlags { + if err := db.ColumnCreate("Tbl2.col", "Tbl.col", indexFlags); err != nil { + t.Fatalf("db.ColumnCreate failed: %v", err) + } + if err := db.ColumnRemove("Tbl2.col"); err != nil { + t.Fatalf("db.ColumnRemove failed: %v", err) + } + } + if err := db.TableRemove("Tbl2", false); err != nil { + t.Fatalf("db.TableRemove failed: %v", err) + } + if err := db.ColumnRemove("Tbl.col"); err != nil { + t.Fatalf("db.ColumnRemove failed: %v", err) + } + } + } + } +} + func TestDBColumnList(t *testing.T) { db, dir := makeDB(t) defer removeDB(db, dir) -------------- next part -------------- HTML����������������������������... URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20170914/db5e8806/attachment-0001.htm