Skip to content

Commit 011733b

Browse files
committed
extend MySQL test case with type check
1 parent d2cfc20 commit 011733b

File tree

1 file changed

+118
-0
lines changed

1 file changed

+118
-0
lines changed

test/datasource/MySQL.cfc

Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,124 @@ component extends="org.lucee.cfml.test.LuceeTestCase" labels="mysql" {
9898
}
9999

100100

101+
public void function testTypesDefault() {
102+
testTypes();
103+
}
104+
105+
public void function testTypes8019() {
106+
testTypes("8.0.19");
107+
}
108+
109+
public void function testTypes8033() {
110+
testTypes("8.0.33");
111+
}
112+
113+
/**
114+
* test types
115+
*/
116+
private void function testTypes(version="") {
117+
if(!variables.has) return;
118+
119+
var datasourceName="ds"&createUniqueID();
120+
defineDatasource(arguments.version,datasourceName);
121+
122+
var MinInt="-2147483648";
123+
var MaxInt="2147483647";
124+
var MinUnsignedInt="0";
125+
var UnsignedMaxInt="4294967295";
126+
var MinBigInt="-9223372036854775808";
127+
var MaxBigInt="9223372036854775807";
128+
var MinUnsignedBigInt="0";
129+
var UnsignedMaxBigInt="18446744073709551615";
130+
var MinFloat="-3.402823466E+38";
131+
var MaxFloat="3.402823466E+38";
132+
var MinDouble="-1.7976931348623157E+308";
133+
var MaxDouble="1.7976931348623157E+308";
134+
var MinDecimal="-99999999999999.9999";
135+
var MaxDecimal="99999999999999.9999";
136+
137+
138+
try {
139+
140+
query name="local.qry" datasource=datasourceName {
141+
echo("
142+
SELECT
143+
CAST(#MinInt# AS SIGNED INTEGER) AS MinInt,
144+
CAST(#MaxInt# AS SIGNED INTEGER) AS MaxInt, -- INT (signed)
145+
CAST(#MinUnsignedInt# AS UNSIGNED INTEGER) AS MinUnsignedInt,
146+
CAST(#UnsignedMaxInt# AS UNSIGNED INTEGER) AS UnsignedMaxInt, -- INT (unsigned)
147+
CAST(#MinBigInt# AS SIGNED) AS MinBigInt,
148+
CAST(#MaxBigInt# AS SIGNED) AS MaxBigInt, -- BIGINT (signed)
149+
CAST(#MinUnsignedBigInt# AS UNSIGNED) AS MinUnsignedBigInt,
150+
CAST(#UnsignedMaxBigInt# AS UNSIGNED) AS UnsignedMaxBigInt, -- BIGINT (unsigned)
151+
CAST(#MinFloat# AS FLOAT) AS MinFloat,
152+
CAST(#MaxFloat# AS FLOAT) AS MaxFloat, -- FLOAT
153+
CAST(#MinDouble# AS DOUBLE) AS MinDouble,
154+
CAST(#MaxDouble# AS DOUBLE) AS MaxDouble, -- DOUBLE
155+
CAST(#MinDecimal# AS DECIMAL(18,4)) AS MinDecimal,
156+
CAST(#MaxDecimal# AS DECIMAL(18,4)) AS MaxDecimal -- DECIMAL
157+
;");
158+
}
159+
assertEquals("java.lang.String",qry.MinInt[1].getClass().getName());
160+
assertEquals(MaxInt,qry.MaxInt);
161+
assertEquals(MaxInt,""&qry.MaxInt);
162+
163+
assertEquals("java.lang.Double",qry.MinUnsignedInt[1].getClass().getName());
164+
assertEquals(MinUnsignedInt,qry.MinUnsignedInt);
165+
assertEquals(MinUnsignedInt,""&qry.MinUnsignedInt);
166+
167+
assertEquals("java.lang.String",qry.UnsignedMaxInt[1].getClass().getName());
168+
assertEquals(UnsignedMaxInt,qry.UnsignedMaxInt);
169+
assertEquals(UnsignedMaxInt,""&qry.UnsignedMaxInt);
170+
171+
assertEquals("java.lang.String",qry.MinBigInt[1].getClass().getName());
172+
assertEquals(MinBigInt,qry.MinBigInt);
173+
assertEquals(MinBigInt,""&qry.MinBigInt);
174+
175+
assertEquals("java.lang.String",qry.MaxBigInt[1].getClass().getName());
176+
assertEquals(MaxBigInt,qry.MaxBigInt);
177+
assertEquals(MaxBigInt,""&qry.MaxBigInt);
178+
179+
assertEquals("java.lang.Double",qry.MinUnsignedBigInt[1].getClass().getName());
180+
assertEquals(MinUnsignedBigInt,qry.MinUnsignedBigInt);
181+
assertEquals(MinUnsignedBigInt,""&qry.MinUnsignedBigInt);
182+
183+
assertEquals("java.lang.String",qry.UnsignedMaxBigInt[1].getClass().getName());
184+
assertEquals(UnsignedMaxBigInt,qry.UnsignedMaxBigInt);
185+
assertEquals(UnsignedMaxBigInt,""&qry.UnsignedMaxBigInt);
186+
187+
// ATM we only test the types, because there is an issue with float that need fixing first
188+
assertEquals("java.lang.Float",qry.MinFloat[1].getClass().getName());
189+
//assertEquals(MinFloat,qry.MinFloat);
190+
//assertEquals(MinFloat,""&qry.MinFloat);
191+
192+
// ATM we only test the types, because there is an issue with float that need fixing first
193+
assertEquals("java.lang.Float",qry.MaxFloat[1].getClass().getName());
194+
//assertEquals(MaxFloat,qry.MaxFloat);
195+
//assertEquals(MaxFloat,""&qry.MaxFloat);
196+
197+
assertEquals("java.lang.Double",qry.MinDouble[1].getClass().getName());
198+
assertEquals(MinDouble,qry.MinDouble);
199+
assertEquals(MinDouble,""&qry.MinDouble);
200+
201+
assertEquals("java.lang.Double",qry.MaxDouble[1].getClass().getName());
202+
assertEquals(MaxDouble,qry.MaxDouble);
203+
assertEquals(MaxDouble,""&qry.MaxDouble);
204+
205+
assertEquals("java.math.BigDecimal",qry.MinDecimal[1].getClass().getName());
206+
assertEquals(MinDecimal,qry.MinDecimal);
207+
assertEquals(MinDecimal,""&qry.MinDecimal);
208+
209+
assertEquals("java.math.BigDecimal",qry.MaxDecimal[1].getClass().getName());
210+
assertEquals(MaxDecimal,qry.MaxDecimal);
211+
assertEquals(MaxDecimal,""&qry.MaxDecimal);
212+
}
213+
finally {
214+
215+
}
216+
}
217+
218+
101219
public void function testMySQLWithBSTTimezone(){
102220
if(!variables.has) return;
103221

0 commit comments

Comments
 (0)