Skip to content

Commit da69877

Browse files
authored
evaluator: change test (#2304)
1 parent dec5ae5 commit da69877

4 files changed

Lines changed: 430 additions & 377 deletions

File tree

evaluator/builtin_time_test.go

Lines changed: 0 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import (
1919
"time"
2020

2121
. "github.com/pingcap/check"
22-
"github.com/pingcap/tidb/ast"
23-
"github.com/pingcap/tidb/model"
2422
"github.com/pingcap/tidb/util/mock"
2523
"github.com/pingcap/tidb/util/testleak"
2624
"github.com/pingcap/tidb/util/testutil"
@@ -443,132 +441,6 @@ func (s *testEvaluatorSuite) TestUTCDate(c *C) {
443441
c.Assert(n.String(), GreaterEqual, last.Format(types.DateFormat))
444442
}
445443

446-
func (s *testEvaluatorSuite) TestDateArith(c *C) {
447-
defer testleak.AfterTest(c)()
448-
ctx := mock.NewContext()
449-
450-
// list all test cases
451-
tests := []struct {
452-
Date interface{}
453-
Interval interface{}
454-
Unit string
455-
AddResult interface{}
456-
SubResult interface{}
457-
error bool
458-
}{
459-
// basic test
460-
{"2011-11-11", 1, "DAY", "2011-11-12", "2011-11-10", false},
461-
// nil test
462-
{nil, 1, "DAY", nil, nil, false},
463-
{"2011-11-11", nil, "DAY", nil, nil, false},
464-
// tests for different units
465-
{"2011-11-11 10:10:10", 1000, "MICROSECOND", "2011-11-11 10:10:10.001000", "2011-11-11 10:10:09.999000", false},
466-
{"2011-11-11 10:10:10", "10", "SECOND", "2011-11-11 10:10:20", "2011-11-11 10:10:00", false},
467-
{"2011-11-11 10:10:10", "10", "MINUTE", "2011-11-11 10:20:10", "2011-11-11 10:00:10", false},
468-
{"2011-11-11 10:10:10", "10", "HOUR", "2011-11-11 20:10:10", "2011-11-11 00:10:10", false},
469-
{"2011-11-11 10:10:10", "11", "DAY", "2011-11-22 10:10:10", "2011-10-31 10:10:10", false},
470-
{"2011-11-11 10:10:10", "2", "WEEK", "2011-11-25 10:10:10", "2011-10-28 10:10:10", false},
471-
{"2011-11-11 10:10:10", "2", "MONTH", "2012-01-11 10:10:10", "2011-09-11 10:10:10", false},
472-
{"2011-11-11 10:10:10", "4", "QUARTER", "2012-11-11 10:10:10", "2010-11-11 10:10:10", false},
473-
{"2011-11-11 10:10:10", "2", "YEAR", "2013-11-11 10:10:10", "2009-11-11 10:10:10", false},
474-
{"2011-11-11 10:10:10", "10.00100000", "SECOND_MICROSECOND", "2011-11-11 10:10:20.100000", "2011-11-11 10:09:59.900000", false},
475-
{"2011-11-11 10:10:10", "10.0010000000", "SECOND_MICROSECOND", "2011-11-11 10:10:30", "2011-11-11 10:09:50", false},
476-
{"2011-11-11 10:10:10", "10.0010000010", "SECOND_MICROSECOND", "2011-11-11 10:10:30.000010", "2011-11-11 10:09:49.999990", false},
477-
{"2011-11-11 10:10:10", "10:10.100", "MINUTE_MICROSECOND", "2011-11-11 10:20:20.100000", "2011-11-11 09:59:59.900000", false},
478-
{"2011-11-11 10:10:10", "10:10", "MINUTE_SECOND", "2011-11-11 10:20:20", "2011-11-11 10:00:00", false},
479-
{"2011-11-11 10:10:10", "10:10:10.100", "HOUR_MICROSECOND", "2011-11-11 20:20:20.100000", "2011-11-10 23:59:59.900000", false},
480-
{"2011-11-11 10:10:10", "10:10:10", "HOUR_SECOND", "2011-11-11 20:20:20", "2011-11-11 00:00:00", false},
481-
{"2011-11-11 10:10:10", "10:10", "HOUR_MINUTE", "2011-11-11 20:20:10", "2011-11-11 00:00:10", false},
482-
{"2011-11-11 10:10:10", "11 10:10:10.100", "DAY_MICROSECOND", "2011-11-22 20:20:20.100000", "2011-10-30 23:59:59.900000", false},
483-
{"2011-11-11 10:10:10", "11 10:10:10", "DAY_SECOND", "2011-11-22 20:20:20", "2011-10-31 00:00:00", false},
484-
{"2011-11-11 10:10:10", "11 10:10", "DAY_MINUTE", "2011-11-22 20:20:10", "2011-10-31 00:00:10", false},
485-
{"2011-11-11 10:10:10", "11 10", "DAY_HOUR", "2011-11-22 20:10:10", "2011-10-31 00:10:10", false},
486-
{"2011-11-11 10:10:10", "11-1", "YEAR_MONTH", "2022-12-11 10:10:10", "2000-10-11 10:10:10", false},
487-
{"2011-11-11 10:10:10", "11-11", "YEAR_MONTH", "2023-10-11 10:10:10", "1999-12-11 10:10:10", false},
488-
// tests for interval in day forms
489-
{"2011-11-11 10:10:10", "20", "DAY", "2011-12-01 10:10:10", "2011-10-22 10:10:10", false},
490-
{"2011-11-11 10:10:10", 19.88, "DAY", "2011-12-01 10:10:10", "2011-10-22 10:10:10", false},
491-
{"2011-11-11 10:10:10", "19.88", "DAY", "2011-11-30 10:10:10", "2011-10-23 10:10:10", false},
492-
{"2011-11-11 10:10:10", "prefix19suffix", "DAY", "2011-11-30 10:10:10", "2011-10-23 10:10:10", false},
493-
{"2011-11-11 10:10:10", "20-11", "DAY", "2011-12-01 10:10:10", "2011-10-22 10:10:10", false},
494-
{"2011-11-11 10:10:10", "20,11", "daY", "2011-12-01 10:10:10", "2011-10-22 10:10:10", false},
495-
{"2011-11-11 10:10:10", "1000", "dAy", "2014-08-07 10:10:10", "2009-02-14 10:10:10", false},
496-
{"2011-11-11 10:10:10", "true", "Day", "2011-11-12 10:10:10", "2011-11-10 10:10:10", false},
497-
{"2011-11-11 10:10:10", true, "Day", "2011-11-12 10:10:10", "2011-11-10 10:10:10", false},
498-
// test for different return data types
499-
{"2011-11-11", 1, "DAY", "2011-11-12", "2011-11-10", false},
500-
{"2011-11-11", 10, "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00", false},
501-
{"2011-11-11", 10, "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00", false},
502-
{"2011-11-11", 10, "SECOND", "2011-11-11 00:00:10", "2011-11-10 23:59:50", false},
503-
{"2011-11-11", "10:10", "HOUR_MINUTE", "2011-11-11 10:10:00", "2011-11-10 13:50:00", false},
504-
{"2011-11-11", "10:10:10", "HOUR_SECOND", "2011-11-11 10:10:10", "2011-11-10 13:49:50", false},
505-
{"2011-11-11", "10:10:10.101010", "HOUR_MICROSECOND", "2011-11-11 10:10:10.101010", "2011-11-10 13:49:49.898990", false},
506-
{"2011-11-11", "10:10", "MINUTE_SECOND", "2011-11-11 00:10:10", "2011-11-10 23:49:50", false},
507-
{"2011-11-11", "10:10.101010", "MINUTE_MICROSECOND", "2011-11-11 00:10:10.101010", "2011-11-10 23:49:49.898990", false},
508-
{"2011-11-11", "10.101010", "SECOND_MICROSECOND", "2011-11-11 00:00:10.101010", "2011-11-10 23:59:49.898990", false},
509-
{"2011-11-11 00:00:00", 1, "DAY", "2011-11-12 00:00:00", "2011-11-10 00:00:00", false},
510-
{"2011-11-11 00:00:00", 10, "HOUR", "2011-11-11 10:00:00", "2011-11-10 14:00:00", false},
511-
{"2011-11-11 00:00:00", 10, "MINUTE", "2011-11-11 00:10:00", "2011-11-10 23:50:00", false},
512-
{"2011-11-11 00:00:00", 10, "SECOND", "2011-11-11 00:00:10", "2011-11-10 23:59:50", false},
513-
// tests for invalid input
514-
{"2011-11-11", "abc1000", "MICROSECOND", nil, nil, true},
515-
{"20111111 10:10:10", "1", "DAY", nil, nil, true},
516-
{"2011-11-11", "10", "SECOND_MICROSECOND", nil, nil, true},
517-
{"2011-11-11", "10.0000", "MINUTE_MICROSECOND", nil, nil, true},
518-
{"2011-11-11", "10:10:10", "MINUTE_MICROSECOND", nil, nil, true},
519-
}
520-
521-
// run the test cases
522-
for _, t := range tests {
523-
op := ast.NewValueExpr(ast.DateAdd)
524-
dateArithInterval := ast.NewValueExpr(
525-
ast.DateArithInterval{
526-
Unit: t.Unit,
527-
Interval: ast.NewValueExpr(t.Interval),
528-
},
529-
)
530-
date := ast.NewValueExpr(t.Date)
531-
expr := &ast.FuncCallExpr{
532-
FnName: model.NewCIStr("DATE_ARITH"),
533-
Args: []ast.ExprNode{
534-
op,
535-
date,
536-
dateArithInterval,
537-
},
538-
}
539-
ast.SetFlag(expr)
540-
v, err := Eval(ctx, expr)
541-
if t.error == true {
542-
c.Assert(err, NotNil)
543-
} else {
544-
c.Assert(err, IsNil)
545-
if v.IsNull() {
546-
c.Assert(nil, Equals, t.AddResult)
547-
} else {
548-
c.Assert(v.Kind(), Equals, types.KindMysqlTime)
549-
value := v.GetMysqlTime()
550-
c.Assert(value.String(), Equals, t.AddResult)
551-
}
552-
}
553-
554-
op = ast.NewValueExpr(ast.DateSub)
555-
expr.Args[0] = op
556-
v, err = Eval(ctx, expr)
557-
if t.error == true {
558-
c.Assert(err, NotNil)
559-
} else {
560-
c.Assert(err, IsNil)
561-
if v.IsNull() {
562-
c.Assert(nil, Equals, t.AddResult)
563-
} else {
564-
c.Assert(v.Kind(), Equals, types.KindMysqlTime)
565-
value := v.GetMysqlTime()
566-
c.Assert(value.String(), Equals, t.SubResult)
567-
}
568-
}
569-
}
570-
}
571-
572444
func (s *testEvaluatorSuite) TestStrToDate(c *C) {
573445
tests := []struct {
574446
Date string

0 commit comments

Comments
 (0)