MCPcopy Create free account
hub / github.com/bytedance/bolt / TEST

Function TEST

bolt/expression/tests/SignatureBinderTest.cpp:59–282  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

57}
58
59TEST(SignatureBinderTest, decimals) {
60 // Decimal Add/Subtract.
61 {
62 auto signature =
63 exec::FunctionSignatureBuilder()
64 .integerVariable("a_precision")
65 .integerVariable("a_scale")
66 .integerVariable("b_precision")
67 .integerVariable("b_scale")
68 .integerVariable(
69 "r_precision",
70 "min(38, max(a_precision - a_scale, b_precision - b_scale) + max(a_scale, b_scale) + 1)")
71 .integerVariable("r_scale", "max(a_scale, b_scale)")
72 .returnType("decimal(r_precision, r_scale)")
73 .argumentType("decimal(a_precision, a_scale)")
74 .argumentType("decimal(b_precision, b_scale)")
75 .build();
76 ASSERT_EQ(
77 signature->argumentTypes()[0].toString(),
78 "decimal(a_precision,a_scale)");
79 ASSERT_EQ(
80 signature->argumentTypes()[1].toString(),
81 "decimal(b_precision,b_scale)");
82 testSignatureBinder(
83 signature, {DECIMAL(11, 5), DECIMAL(10, 6)}, DECIMAL(13, 6));
84 }
85
86 // Decimal Multiply.
87 {
88 auto signature =
89 exec::FunctionSignatureBuilder()
90 .integerVariable("a_precision")
91 .integerVariable("a_scale")
92 .integerVariable("b_precision")
93 .integerVariable("b_scale")
94 .integerVariable(
95 "r_precision", "min(38, a_precision + b_precision)")
96 .integerVariable("r_scale", "a_scale + b_scale")
97 .returnType("DECIMAL(r_precision, r_scale)")
98 .argumentType("decimal(a_precision, a_scale)")
99 .argumentType("decimal(b_precision, b_scale)")
100 .build();
101
102 testSignatureBinder(
103 signature, {DECIMAL(11, 5), DECIMAL(10, 6)}, DECIMAL(21, 11));
104 }
105
106 // Decimal Divide.
107 {
108 auto signature =
109 exec::FunctionSignatureBuilder()
110 .integerVariable("a_precision")
111 .integerVariable("a_scale")
112 .integerVariable("b_precision")
113 .integerVariable("b_scale")
114 .integerVariable(
115 "r_precision",
116 "min(38, a_precision + b_scale + max(b_scale - a_scale, 0))")

Callers

nothing calls this directly

Calls 15

testSignatureBinderFunction · 0.85
DECIMALFunction · 0.85
tryResolveTypeFunction · 0.85
TypeSignatureClass · 0.85
SignatureVariableClass · 0.85
assertCannotResolveFunction · 0.85
MAPFunction · 0.85
UNKNOWNFunction · 0.85
ARRAYFunction · 0.85
ROWFunction · 0.85

Tested by

no test coverage detected