name:
src/test/java/io/protobase/f7/utils/ConvertersTest.java
-rw-r--r--
6764
1package io.protobase.f7.utils;
2
3import com.google.common.collect.ImmutableList;
4import io.protobase.f7.errors.DivException;
5import io.protobase.f7.errors.F7Exception;
6import io.protobase.f7.errors.NumException;
7import io.protobase.f7.errors.ValueException;
8import org.junit.Test;
9
10import static com.google.common.truth.Truth.assertThat;
11
12public class ConvertersTest {
13
14 @Test
15 public void test_compareDouble() {
16 assertThat(Converters.compare(0.0, 0.0)).isEqualTo(ComparisonResult.EQUAL);
17 assertThat(Converters.compare(1.0, 1.0)).isEqualTo(ComparisonResult.EQUAL);
18 assertThat(Converters.compare(1.0, 0.0)).isEqualTo(ComparisonResult.GREATER_THAN);
19 assertThat(Converters.compare(2.0, 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
20 assertThat(Converters.compare(0.0, 1.0)).isEqualTo(ComparisonResult.LESS_THAN);
21 assertThat(Converters.compare(1.0, 2.0)).isEqualTo(ComparisonResult.LESS_THAN);
22 }
23
24 @Test
25 public void test_compareString() {
26 assertThat(Converters.compare("a", "a")).isEqualTo(ComparisonResult.EQUAL);
27 assertThat(Converters.compare("b", "b")).isEqualTo(ComparisonResult.EQUAL);
28 assertThat(Converters.compare("b", "a")).isEqualTo(ComparisonResult.GREATER_THAN);
29 assertThat(Converters.compare("c", "b")).isEqualTo(ComparisonResult.GREATER_THAN);
30 assertThat(Converters.compare("a", "b")).isEqualTo(ComparisonResult.LESS_THAN);
31 assertThat(Converters.compare("b", "c")).isEqualTo(ComparisonResult.LESS_THAN);
32 }
33
34 @Test
35 public void test_compareBoolean() {
36 assertThat(Converters.compare(true, true)).isEqualTo(ComparisonResult.EQUAL);
37 assertThat(Converters.compare(false, false)).isEqualTo(ComparisonResult.EQUAL);
38 assertThat(Converters.compare(true, false)).isEqualTo(ComparisonResult.GREATER_THAN);
39 assertThat(Converters.compare(false, true)).isEqualTo(ComparisonResult.LESS_THAN);
40 }
41
42 @Test
43 public void test_compareDoubleAndString() {
44 assertThat(Converters.compare(1.0, "a")).isEqualTo(ComparisonResult.LESS_THAN);
45 assertThat(Converters.compare(-10.0, "a")).isEqualTo(ComparisonResult.LESS_THAN);
46 assertThat(Converters.compare("a", 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
47 assertThat(Converters.compare("a", -10.0)).isEqualTo(ComparisonResult.GREATER_THAN);
48 }
49
50 @Test
51 public void test_compareDoubleAndBoolean() {
52 assertThat(Converters.compare(1.0, true)).isEqualTo(ComparisonResult.LESS_THAN);
53 assertThat(Converters.compare(-10.0, true)).isEqualTo(ComparisonResult.LESS_THAN);
54 assertThat(Converters.compare(1.0, false)).isEqualTo(ComparisonResult.LESS_THAN);
55 assertThat(Converters.compare(-10.0, false)).isEqualTo(ComparisonResult.LESS_THAN);
56 assertThat(Converters.compare(true, 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
57 assertThat(Converters.compare(true, -10.0)).isEqualTo(ComparisonResult.GREATER_THAN);
58 assertThat(Converters.compare(false, 1.0)).isEqualTo(ComparisonResult.GREATER_THAN);
59 assertThat(Converters.compare(false, -10.0)).isEqualTo(ComparisonResult.GREATER_THAN);
60 }
61
62 @Test
63 public void test_compareBooleanString() {
64 assertThat(Converters.compare("a", true)).isEqualTo(ComparisonResult.LESS_THAN);
65 assertThat(Converters.compare("a", false)).isEqualTo(ComparisonResult.LESS_THAN);
66 assertThat(Converters.compare("", true)).isEqualTo(ComparisonResult.LESS_THAN);
67 assertThat(Converters.compare("", false)).isEqualTo(ComparisonResult.LESS_THAN);
68 assertThat(Converters.compare(true, "a")).isEqualTo(ComparisonResult.GREATER_THAN);
69 assertThat(Converters.compare(false, "a")).isEqualTo(ComparisonResult.GREATER_THAN);
70 assertThat(Converters.compare(true, "")).isEqualTo(ComparisonResult.GREATER_THAN);
71 assertThat(Converters.compare(false, "")).isEqualTo(ComparisonResult.GREATER_THAN);
72 }
73
74 @Test
75 public void test_compareNull() {
76 assertThat(Converters.compare(null, null)).isEqualTo(ComparisonResult.EQUAL);
77 }
78
79 @Test
80 public void test_compareNullAndBoolean() {
81 assertThat(Converters.compare(null, true)).isEqualTo(ComparisonResult.LESS_THAN);
82 assertThat(Converters.compare(null, false)).isEqualTo(ComparisonResult.EQUAL);
83 assertThat(Converters.compare(true, null)).isEqualTo(ComparisonResult.GREATER_THAN);
84 assertThat(Converters.compare(false, null)).isEqualTo(ComparisonResult.EQUAL);
85 }
86
87 @Test
88 public void test_compareNullAndNumber() {
89 assertThat(Converters.compare(null, 1.0)).isEqualTo(ComparisonResult.LESS_THAN);
90 assertThat(Converters.compare(null, 1000.0)).isEqualTo(ComparisonResult.LESS_THAN);
91 assertThat(Converters.compare(null, 0.0)).isEqualTo(ComparisonResult.EQUAL);
92 assertThat(Converters.compare(1.0, null)).isEqualTo(ComparisonResult.GREATER_THAN);
93 assertThat(Converters.compare(1000.0, null)).isEqualTo(ComparisonResult.GREATER_THAN);
94 assertThat(Converters.compare(0.0, null)).isEqualTo(ComparisonResult.EQUAL);
95 }
96
97 @Test
98 public void test_compareNullAndString() {
99 assertThat(Converters.compare(null, "a")).isEqualTo(ComparisonResult.LESS_THAN);
100 assertThat(Converters.compare(null, "b")).isEqualTo(ComparisonResult.LESS_THAN);
101 assertThat(Converters.compare(null, "")).isEqualTo(ComparisonResult.EQUAL);
102 assertThat(Converters.compare("a", null)).isEqualTo(ComparisonResult.GREATER_THAN);
103 assertThat(Converters.compare("b", null)).isEqualTo(ComparisonResult.GREATER_THAN);
104 assertThat(Converters.compare("", null)).isEqualTo(ComparisonResult.EQUAL);
105 }
106
107 @Test
108 public void testConvertToDouble_fromDouble() {
109 assertThat(Converters.toDouble(10.1)).isEqualTo(10.1);
110 assertThat(Converters.toDouble(10.0)).isEqualTo(10.0);
111 }
112
113 @Test
114 public void testConvertToDouble_fromString() {
115 assertThat(Converters.toDouble("10.1")).isEqualTo(10.1);
116 assertThat(Converters.toDouble("10.1e4")).isEqualTo(10.1e4);
117 }
118
119 @Test
120 public void testConvertToDouble_fromBoolean() {
121 assertThat(Converters.toDouble(true)).isEqualTo(1.0);
122 assertThat(Converters.toDouble(false)).isEqualTo(0.0);
123 }
124
125 @Test
126 public void testConvertToDouble_fromError() {
127 assertThat(tryToConvertToDoubleAndCatch(new DivException())).isEqualTo(new DivException());
128 assertThat(tryToConvertToDoubleAndCatch(new NumException())).isEqualTo(new NumException());
129 }
130
131 @Test
132 public void testConvertToDouble_fromAnythingElse() {
133 assertThat(tryToConvertToDoubleAndCatch(10)).isEqualTo(new ValueException());
134 assertThat(tryToConvertToDoubleAndCatch(ImmutableList.of())).isEqualTo(new ValueException());
135 assertThat(tryToConvertToDoubleAndCatch(new Object())).isEqualTo(new ValueException());
136 }
137
138 private Object tryToConvertToDoubleAndCatch(Object any) {
139 try {
140 return Converters.toDouble(any);
141 } catch (F7Exception error) {
142 return error;
143 }
144 }
145}