(t testing.TB, gen testutil.DatabaseFunc, conf *Config)
| 1059 | } |
| 1060 | |
| 1061 | func TestCompareTypedValues(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { |
| 1062 | if conf.UnTyped { |
| 1063 | t.SkipNow() |
| 1064 | } |
| 1065 | qs, opts, closer := gen(t) |
| 1066 | defer closer() |
| 1067 | |
| 1068 | w := testutil.MakeWriter(t, qs, opts) |
| 1069 | |
| 1070 | t1 := tzero |
| 1071 | t2 := t1.Add(time.Hour) |
| 1072 | t3 := t2.Add(time.Hour * 48) |
| 1073 | t4 := t1.Add(time.Hour * 24 * 365) |
| 1074 | |
| 1075 | quads := []quad.Quad{ |
| 1076 | {quad.BNode("alice"), quad.BNode("bob"), quad.BNode("charlie"), quad.BNode("dani")}, |
| 1077 | {quad.IRI("alice"), quad.IRI("bob"), quad.IRI("charlie"), quad.IRI("dani")}, |
| 1078 | {quad.String("alice"), quad.String("bob"), quad.String("charlie"), quad.String("dani")}, |
| 1079 | {quad.Int(100), quad.Int(112), quad.Int(110), quad.Int(20)}, |
| 1080 | {quad.Time(t1), quad.Time(t2), quad.Time(t3), quad.Time(t4)}, |
| 1081 | // test precision as well |
| 1082 | {quad.Int(math.MaxInt64), quad.Int(math.MaxInt64 - 1), quad.Int(math.MinInt64 + 1), quad.Int(math.MinInt64)}, |
| 1083 | } |
| 1084 | |
| 1085 | err := w.AddQuadSet(quads) |
| 1086 | require.NoError(t, err) |
| 1087 | |
| 1088 | var vals []quad.Value |
| 1089 | for _, q := range quads { |
| 1090 | for _, d := range quad.Directions { |
| 1091 | if v := q.Get(d); v != nil { |
| 1092 | vals = append(vals, v) |
| 1093 | } |
| 1094 | } |
| 1095 | } |
| 1096 | ExpectIteratedValues(t, qs, qs.NodesAllIterator(), vals, true) |
| 1097 | |
| 1098 | for _, c := range casesCompare { |
| 1099 | //t.Log(c.op, c.val) |
| 1100 | it := iterator.NewComparison(qs.NodesAllIterator(), c.op, c.val, qs) |
| 1101 | ExpectIteratedValues(t, qs, it, c.expect, true) |
| 1102 | } |
| 1103 | |
| 1104 | for _, c := range casesCompare { |
| 1105 | s := shape.Compare(shape.AllNodes{}, c.op, c.val) |
| 1106 | ns, ok := shape.Optimize(s, qs) |
| 1107 | require.Equal(t, conf.OptimizesComparison, ok) |
| 1108 | if conf.OptimizesComparison { |
| 1109 | require.NotEqual(t, s, ns) |
| 1110 | } else { |
| 1111 | require.Equal(t, s, ns) |
| 1112 | } |
| 1113 | nit := shape.BuildIterator(qs, ns) |
| 1114 | ExpectIteratedValues(t, qs, nit, c.expect, true) |
| 1115 | } |
| 1116 | } |
| 1117 | |
| 1118 | func TestNodeDelete(t testing.TB, gen testutil.DatabaseFunc, conf *Config) { |
nothing calls this directly
no test coverage detected