4
4
5
5
package doobie .util
6
6
7
- import cats .syntax .all .*
8
7
import cats .effect .IO
8
+ import cats .syntax .all .*
9
9
import doobie .*
10
+ import doobie .Fragment .const0
10
11
import doobie .implicits .*
11
12
import doobie .testutils .VoidExtensions
12
13
import munit .CatsEffectSuite
@@ -33,9 +34,25 @@ class FragmentSuite extends CatsEffectSuite {
33
34
assertEquals(fr " foo $a $b bar " .query[Unit ].sql, " foo ? ? bar " )
34
35
}
35
36
36
- test(" Fragment must concatenate properly" ) {
37
+ test(" Fragment builders DO NOT treat backslashes as escape characters" ) {
38
+ assertEquals(fr0 " foo \\ bar " .query[Unit ].sql, """ foo\\ bar""" )
39
+ assertEquals(fr0 " foo \n bar " .query[Unit ].sql, """ foo\nbar""" )
40
+ }
41
+ test(" Fragment must concatenate properly with `++`" ) {
37
42
assertEquals((fr " foo " ++ fr " bar $a baz " ).query[Unit ].sql, " foo bar ? baz " )
38
43
}
44
+ test(" Fragment must concatenate properly enforcing at least 1 whitespace in between with `+~+`" ) {
45
+ // Since `fr"..."` do not parse backslashes as escape characters, so we need to use `const0` to test them.
46
+ assertEquals((const0(" " ) +~+ const0(" bar" )).query[Unit ].sql, " bar" )
47
+ assertEquals((const0(" foo" ) +~+ const0(" " )).query[Unit ].sql, " foo" )
48
+ assertEquals((const0(" foo" ) +~+ const0(" bar" )).query[Unit ].sql, " foo bar" )
49
+ assertEquals((const0(" foo " ) +~+ const0(" bar" )).query[Unit ].sql, " foo bar" )
50
+ assertEquals((const0(" foo\n " ) +~+ const0(" bar" )).query[Unit ].sql, " foo\n bar" )
51
+ assertEquals((const0(" foo" ) +~+ const0(" bar" )).query[Unit ].sql, " foo bar" )
52
+ assertEquals((const0(" foo" ) +~+ const0(" \t bar" )).query[Unit ].sql, " foo\t bar" )
53
+ assertEquals((const0(" foo " ) +~+ const0(" bar" )).query[Unit ].sql, " foo bar" )
54
+ assertEquals((const0(" foo\r " ) +~+ const0(" \f bar" )).query[Unit ].sql, " foo\r\f bar" )
55
+ }
39
56
40
57
test(" Fragment must interpolate fragments properly" ) {
41
58
assertEquals(fr " foo ${fr0 " bar $a baz " }" .query[Unit ].sql, " foo bar ? baz " )
0 commit comments