Skip to content

Commit e4f108f

Browse files
author
Tony Kay
committed
added update tests, and support code
1 parent a282e85 commit e4f108f

File tree

2 files changed

+49
-9
lines changed

2 files changed

+49
-9
lines changed

src/main/scala/org/squeryl/PrimitiveTypeMode.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@ trait PrimitiveTypeMode extends QueryDsl with FieldMapper {
3838
implicit val optionDateTEF = PrimitiveTypeSupport.optionDateTEF
3939
implicit val timestampTEF = PrimitiveTypeSupport.timestampTEF
4040
implicit val optionTimestampTEF = PrimitiveTypeSupport.optionTimestampTEF
41+
implicit val doubleArrayTEF = PrimitiveTypeSupport.doubleArrayTEF
42+
implicit val intArrayTEF = PrimitiveTypeSupport.intArrayTEF
43+
implicit val longArrayTEF = PrimitiveTypeSupport.longArrayTEF
4144

4245
// =========================== Numerical Integral ===========================
4346
implicit val byteTEF = PrimitiveTypeSupport.byteTEF
@@ -97,5 +100,9 @@ trait PrimitiveTypeMode extends QueryDsl with FieldMapper {
97100

98101
implicit def bigDecimalToTE(f: BigDecimal) = bigDecimalTEF.create(f)
99102
implicit def optionBigDecimalToTE(f: Option[BigDecimal]) = optionBigDecimalTEF.create(f)
103+
104+
implicit def doubleArrayToTE(f : Array[Double]) = doubleArrayTEF.create(f)
105+
implicit def intArrayToTE(f : Array[Int]) = intArrayTEF.create(f)
106+
implicit def longArrayToTE(f : Array[Long]) = longArrayTEF.create(f)
100107

101108
}

src/test/scala/org/squeryl/test/arrays/PrimitiveArrayTest.scala

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,31 +10,64 @@ abstract class PrimitiveArrayTest extends SchemaTester with RunTestsInsideTransa
1010

1111
import PrimitiveArraySchema._
1212

13-
test("can insert and query integer array values in database") {
13+
test("can insert and query integer, double, and long array values in database") {
1414
transaction {
1515
schema.drop
1616
schema.create
17-
swimmers.insert(new Swimmer(1, Array(10.55, 12.99, 15.32), Array(100,110,20), Array(9876543210L,123456789L)))
18-
}
19-
17+
swimmers.insert(new Swimmer(1, Array(10.55, 12.99, 15.32), Array(100, 110, 20), Array(9876543210L, 123456789L)))
18+
}
19+
2020
val query = from(swimmers)((s) => select(s))
2121
val res = transaction { query.toList }
2222

2323
res.size should equal(1)
2424
res(0).lap_times.size should equal(3)
2525
res(0).lap_times(0) should equal(10.55)
2626
res(0).lap_times(1) should equal(12.99)
27-
res(0).lap_times(2) should equal(15.32)
28-
27+
res(0).lap_times(2) should equal(15.32)
28+
2929
res(0).scores.size should equal(3)
3030
res(0).scores(0) should equal(100)
3131
res(0).scores(1) should equal(110)
32-
res(0).scores(2) should equal(20)
33-
32+
res(0).scores(2) should equal(20)
33+
3434
res(0).orgids.size should equal(2)
3535
res(0).orgids(0) should equal(9876543210L)
3636
res(0).orgids(1) should equal(123456789L)
3737
}
38+
test("can update integer, double, and long array values in database") {
39+
transaction {
40+
schema.drop
41+
schema.create
42+
swimmers.insert(new Swimmer(1, Array(10.55, 12.99, 15.32), Array(100, 110, 20), Array(9876543210L, 123456789L)))
43+
}
44+
45+
val query = from(swimmers)((s) => select(s))
46+
val res = transaction { query.toList }
47+
48+
res.size should equal(1)
49+
res(0).lap_times.size should equal(3)
50+
res(0).scores.size should equal(3)
51+
res(0).orgids.size should equal(2)
52+
53+
transaction {
54+
update(swimmers)(s =>
55+
where(s.id === 1)
56+
set (s.lap_times := Array(11.69), s.scores := Array(1, 2, 3, 4, 5), s.orgids := Array(13L)))
57+
}
58+
59+
val query2 = from(swimmers)((s) => select(s))
60+
val res2 = transaction { query.toList }
61+
62+
res2.size should equal(1)
63+
res2(0).lap_times.size should equal(1)
64+
res2(0).scores.size should equal(5)
65+
res2(0).orgids.size should equal(1)
66+
67+
res2(0).lap_times(0) should equal(11.69)
68+
res2(0).scores(2) should equal(3)
69+
res2(0).orgids(0) should equal(13L)
70+
}
3871
}
3972

4073
import _root_.org.squeryl.Schema
@@ -47,4 +80,4 @@ object PrimitiveArraySchema extends Schema {
4780
override def drop = super.drop
4881
}
4982

50-
class Swimmer(val id: Int, val lap_times: Array[Double], val scores : Array[Int], val orgids : Array[Long])
83+
class Swimmer(val id: Int, val lap_times: Array[Double], val scores: Array[Int], val orgids: Array[Long])

0 commit comments

Comments
 (0)