1
+ package io .r2dbc .postgresql .codec ;
2
+
3
+ import io .r2dbc .postgresql .client .EncodedParameter ;
4
+ import io .r2dbc .postgresql .client .ParameterAssert ;
5
+ import org .junit .jupiter .api .Test ;
6
+
7
+ import java .time .DayOfWeek ;
8
+ import java .util .Arrays ;
9
+ import java .util .function .Consumer ;
10
+
11
+ import static io .r2dbc .postgresql .client .EncodedParameter .NULL_VALUE ;
12
+ import static io .r2dbc .postgresql .codec .PostgresqlObjectId .*;
13
+ import static io .r2dbc .postgresql .message .Format .FORMAT_BINARY ;
14
+ import static io .r2dbc .postgresql .message .Format .FORMAT_TEXT ;
15
+ import static io .r2dbc .postgresql .util .TestByteBufAllocator .TEST ;
16
+ import static org .assertj .core .api .Assertions .assertThat ;
17
+ import static org .assertj .core .api .Assertions .assertThatIllegalArgumentException ;
18
+
19
+ class DayOfWeekCodecTest {
20
+
21
+ @ Test
22
+ void constructorNoByteBufAllocator () {
23
+ assertThatIllegalArgumentException ().isThrownBy (() -> new DayOfWeekCodec (null ))
24
+ .withMessage ("byteBufAllocator must not be null" );
25
+ }
26
+
27
+ @ Test
28
+ void decode () {
29
+ forEveryDayOfWeek (d ->
30
+ assertThat (new DayOfWeekCodec (TEST ).decode (TEST .buffer ().writeInt (d .getValue ()), INT4 , FORMAT_BINARY , DayOfWeek .class )).isEqualTo (d ));
31
+ }
32
+
33
+ @ Test
34
+ void decodeNoByteBuf () {
35
+ assertThat (new DayOfWeekCodec (TEST ).decode (null , INT4 .getObjectId (), FORMAT_BINARY , DayOfWeek .class )).isNull ();
36
+ }
37
+
38
+ @ Test
39
+ void doCanDecode () {
40
+ DayOfWeekCodec codec = new DayOfWeekCodec (TEST );
41
+
42
+ assertThat (codec .doCanDecode (INT4 , FORMAT_BINARY )).isTrue ();
43
+ assertThat (codec .doCanDecode (INT2 , FORMAT_BINARY )).isTrue ();
44
+ assertThat (codec .doCanDecode (INT8 , FORMAT_BINARY )).isTrue ();
45
+ assertThat (codec .doCanDecode (NUMERIC , FORMAT_TEXT )).isTrue ();
46
+ assertThat (codec .doCanDecode (VARCHAR , FORMAT_TEXT )).isFalse ();
47
+ }
48
+
49
+ @ Test
50
+ void doCanDecodeNoType () {
51
+ assertThatIllegalArgumentException ().isThrownBy (() -> new DayOfWeekCodec (TEST ).doCanDecode (null , FORMAT_BINARY ))
52
+ .withMessage ("type must not be null" );
53
+ }
54
+
55
+ @ Test
56
+ void doEncodeInt () {
57
+
58
+ forEveryDayOfWeek (d -> {
59
+ ParameterAssert .assertThat (new DayOfWeekCodec (TEST ).doEncode (d ))
60
+ .hasFormat (FORMAT_BINARY )
61
+ .hasType (INT4 .getObjectId ())
62
+ .hasValue (TEST .buffer ().writeInt (d .getValue ()));
63
+ });
64
+ }
65
+
66
+ @ Test
67
+ void doEncodeShort () {
68
+ forEveryDayOfWeek (d -> {
69
+ ParameterAssert .assertThat (new DayOfWeekCodec (TEST ).doEncode (d , INT2 ))
70
+ .hasFormat (FORMAT_BINARY )
71
+ .hasType (INT2 .getObjectId ())
72
+ .hasValue (TEST .buffer ().writeShort (d .getValue ()));
73
+ });
74
+ }
75
+
76
+ @ Test
77
+ void doEncodeLong () {
78
+
79
+ forEveryDayOfWeek (d -> {
80
+ ParameterAssert .assertThat (new DayOfWeekCodec (TEST ).doEncode (d , INT8 ))
81
+ .hasFormat (FORMAT_BINARY )
82
+ .hasType (INT8 .getObjectId ())
83
+ .hasValue (TEST .buffer ().writeLong (d .getValue ()));
84
+ });
85
+ }
86
+
87
+ @ Test
88
+ void doEncodeNoValue () {
89
+ assertThatIllegalArgumentException ().isThrownBy (() -> new DayOfWeekCodec (TEST ).doEncode (null ))
90
+ .withMessage ("value must not be null" );
91
+ }
92
+
93
+ @ Test
94
+ void encodeItemNoValue () {
95
+ assertThatIllegalArgumentException ().isThrownBy (() -> new DayOfWeekCodec (TEST ).encode (null ))
96
+ .withMessage ("value must not be null" );
97
+ }
98
+
99
+ @ Test
100
+ void encodeNull () {
101
+ ParameterAssert .assertThat (new DayOfWeekCodec (TEST ).encodeNull ())
102
+ .isEqualTo (new EncodedParameter (FORMAT_BINARY , INT4 .getObjectId (), NULL_VALUE ));
103
+ }
104
+
105
+ private void forEveryDayOfWeek (Consumer <DayOfWeek > assertion ) {
106
+ Arrays .stream (DayOfWeek .values ()).forEach (assertion );
107
+ }
108
+ }
0 commit comments