Files
db/dialect/sqlserver/sqlserver_dialect_test.go
whatandClaude 304d553b3c docs: Add CLAUDE.md with codebase guidance
Create comprehensive documentation for future Claude Code instances working in this repository, including:
- Development commands for testing, building, and code quality
- Core architecture overview of the SQL query builder system
- Directory structure and component explanations
- Testing patterns and conventions
- Key dependencies and their purposes

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-09-27 15:47:28 +08:00

61 lines
1.8 KiB
Go

package sqlserver_test
import (
"testing"
dbv2 "git.fsdpf.net/go/db"
"git.fsdpf.net/go/db/exp"
"github.com/stretchr/testify/suite"
)
type (
sqlserverDialectSuite struct {
suite.Suite
}
sqlTestCase struct {
ds exp.SQLExpression
sql string
err string
isPrepared bool
args []interface{}
}
)
func (sds *sqlserverDialectSuite) GetDs(table string) *dbv2.SelectDataset {
return dbv2.Dialect("sqlserver").From(table)
}
func (sds *sqlserverDialectSuite) assertSQL(cases ...sqlTestCase) {
for i, c := range cases {
actualSQL, actualArgs, err := c.ds.ToSQL()
if c.err == "" {
sds.NoError(err, "test case %d failed", i)
} else {
sds.EqualError(err, c.err, "test case %d failed", i)
}
sds.Equal(c.sql, actualSQL, "test case %d failed", i)
if c.isPrepared && c.args != nil || len(c.args) > 0 {
sds.Equal(c.args, actualArgs, "test case %d failed", i)
} else {
sds.Empty(actualArgs, "test case %d failed", i)
}
}
}
func (sds *sqlserverDialectSuite) TestBitwiseOperations() {
col := dbv2.C("a")
ds := sds.GetDs("test")
sds.assertSQL(
sqlTestCase{ds: ds.Where(col.BitwiseInversion()), sql: "SELECT * FROM \"test\" WHERE (~ \"a\")"},
sqlTestCase{ds: ds.Where(col.BitwiseAnd(1)), sql: "SELECT * FROM \"test\" WHERE (\"a\" & 1)"},
sqlTestCase{ds: ds.Where(col.BitwiseOr(1)), sql: "SELECT * FROM \"test\" WHERE (\"a\" | 1)"},
sqlTestCase{ds: ds.Where(col.BitwiseXor(1)), sql: "SELECT * FROM \"test\" WHERE (\"a\" ^ 1)"},
sqlTestCase{ds: ds.Where(col.BitwiseLeftShift(1)), err: "db: bitwise operator 'Left Shift' not supported"},
sqlTestCase{ds: ds.Where(col.BitwiseRightShift(1)), err: "db: bitwise operator 'Right Shift' not supported"},
)
}
func TestDatasetAdapterSuite(t *testing.T) {
suite.Run(t, new(sqlserverDialectSuite))
}