Skip to content

Commit 26bf237

Browse files
fix failed cases
1 parent 6b505ee commit 26bf237

File tree

1 file changed

+191
-0
lines changed

1 file changed

+191
-0
lines changed
Lines changed: 191 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,191 @@
1+
/*
2+
* Licensed to the Apache Software Foundation (ASF) under one
3+
* or more contributor license agreements. See the NOTICE file
4+
* distributed with this work for additional information
5+
* regarding copyright ownership. The ASF licenses this file
6+
* to you under the Apache License, Version 2.0 (the
7+
* "License"); you may not use this file except in compliance
8+
* with the License. You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
package org.apache.fluss.lake.paimon.utils;
20+
21+
import org.apache.fluss.row.InternalArray;
22+
23+
import org.apache.paimon.data.GenericArray;
24+
import org.junit.jupiter.api.Test;
25+
26+
import static org.assertj.core.api.Assertions.assertThat;
27+
28+
/** Test for {@link PaimonMapAsFlussMap}. */
29+
class PaimonMapAsFlussMapTest {
30+
31+
@Test
32+
void testSize() {
33+
org.apache.paimon.data.InternalArray keys = new GenericArray(new Object[] {1, 2, 3});
34+
org.apache.paimon.data.InternalArray values = new GenericArray(new Object[] {"a", "b", "c"});
35+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
36+
37+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
38+
39+
assertThat(flussMap.size()).isEqualTo(3);
40+
}
41+
42+
@Test
43+
void testEmptyMap() {
44+
org.apache.paimon.data.InternalArray keys = new GenericArray(new Object[] {});
45+
org.apache.paimon.data.InternalArray values = new GenericArray(new Object[] {});
46+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
47+
48+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
49+
50+
assertThat(flussMap.size()).isEqualTo(0);
51+
}
52+
53+
@Test
54+
void testKeyArray() {
55+
org.apache.paimon.data.InternalArray keys = new GenericArray(new Object[] {1, 2, 3});
56+
org.apache.paimon.data.InternalArray values = new GenericArray(new Object[] {"a", "b", "c"});
57+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
58+
59+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
60+
61+
InternalArray keyArray = flussMap.keyArray();
62+
assertThat(keyArray).isInstanceOf(PaimonArrayAsFlussArray.class);
63+
assertThat(keyArray.size()).isEqualTo(3);
64+
assertThat(keyArray.getInt(0)).isEqualTo(1);
65+
assertThat(keyArray.getInt(1)).isEqualTo(2);
66+
assertThat(keyArray.getInt(2)).isEqualTo(3);
67+
}
68+
69+
@Test
70+
void testValueArray() {
71+
org.apache.paimon.data.InternalArray keys = new GenericArray(new Object[] {1, 2, 3});
72+
org.apache.paimon.data.InternalArray values =
73+
new GenericArray(
74+
new Object[] {
75+
org.apache.paimon.data.BinaryString.fromString("a"),
76+
org.apache.paimon.data.BinaryString.fromString("b"),
77+
org.apache.paimon.data.BinaryString.fromString("c")
78+
});
79+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
80+
81+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
82+
83+
InternalArray valueArray = flussMap.valueArray();
84+
assertThat(valueArray).isInstanceOf(PaimonArrayAsFlussArray.class);
85+
assertThat(valueArray.size()).isEqualTo(3);
86+
assertThat(valueArray.getString(0).toString()).isEqualTo("a");
87+
assertThat(valueArray.getString(1).toString()).isEqualTo("b");
88+
assertThat(valueArray.getString(2).toString()).isEqualTo("c");
89+
}
90+
91+
@Test
92+
void testMapWithComplexTypes() {
93+
GenericArray innerArray1 = new GenericArray(new Object[] {1, 2});
94+
GenericArray innerArray2 = new GenericArray(new Object[] {3, 4});
95+
96+
org.apache.paimon.data.InternalArray keys =
97+
new GenericArray(
98+
new Object[] {
99+
org.apache.paimon.data.BinaryString.fromString("key1"),
100+
org.apache.paimon.data.BinaryString.fromString("key2")
101+
});
102+
org.apache.paimon.data.InternalArray values =
103+
new GenericArray(new Object[] {innerArray1, innerArray2});
104+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
105+
106+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
107+
108+
assertThat(flussMap.size()).isEqualTo(2);
109+
110+
InternalArray keyArray = flussMap.keyArray();
111+
assertThat(keyArray.getString(0).toString()).isEqualTo("key1");
112+
assertThat(keyArray.getString(1).toString()).isEqualTo("key2");
113+
114+
InternalArray valueArray = flussMap.valueArray();
115+
InternalArray nestedArray1 = valueArray.getArray(0);
116+
assertThat(nestedArray1.size()).isEqualTo(2);
117+
assertThat(nestedArray1.getInt(0)).isEqualTo(1);
118+
assertThat(nestedArray1.getInt(1)).isEqualTo(2);
119+
120+
InternalArray nestedArray2 = valueArray.getArray(1);
121+
assertThat(nestedArray2.size()).isEqualTo(2);
122+
assertThat(nestedArray2.getInt(0)).isEqualTo(3);
123+
assertThat(nestedArray2.getInt(1)).isEqualTo(4);
124+
}
125+
126+
@Test
127+
void testMapWithNullValues() {
128+
org.apache.paimon.data.InternalArray keys = new GenericArray(new Object[] {1, 2, 3});
129+
org.apache.paimon.data.InternalArray values =
130+
new GenericArray(new Object[] {"a", null, "c"});
131+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
132+
133+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
134+
135+
InternalArray valueArray = flussMap.valueArray();
136+
assertThat(valueArray.isNullAt(0)).isFalse();
137+
assertThat(valueArray.isNullAt(1)).isTrue();
138+
assertThat(valueArray.isNullAt(2)).isFalse();
139+
}
140+
141+
@Test
142+
void testMapWithLongKeys() {
143+
org.apache.paimon.data.InternalArray keys =
144+
new GenericArray(new Object[] {100L, 200L, 300L});
145+
org.apache.paimon.data.InternalArray values =
146+
new GenericArray(new Object[] {1.1, 2.2, 3.3});
147+
TestPaimonMap paimonMap = new TestPaimonMap(keys, values);
148+
149+
PaimonMapAsFlussMap flussMap = new PaimonMapAsFlussMap(paimonMap);
150+
151+
assertThat(flussMap.size()).isEqualTo(3);
152+
153+
InternalArray keyArray = flussMap.keyArray();
154+
assertThat(keyArray.getLong(0)).isEqualTo(100L);
155+
assertThat(keyArray.getLong(1)).isEqualTo(200L);
156+
assertThat(keyArray.getLong(2)).isEqualTo(300L);
157+
158+
InternalArray valueArray = flussMap.valueArray();
159+
assertThat(valueArray.getDouble(0)).isEqualTo(1.1);
160+
assertThat(valueArray.getDouble(1)).isEqualTo(2.2);
161+
assertThat(valueArray.getDouble(2)).isEqualTo(3.3);
162+
}
163+
164+
private static class TestPaimonMap implements org.apache.paimon.data.InternalMap {
165+
private final org.apache.paimon.data.InternalArray keys;
166+
private final org.apache.paimon.data.InternalArray values;
167+
168+
TestPaimonMap(
169+
org.apache.paimon.data.InternalArray keys,
170+
org.apache.paimon.data.InternalArray values) {
171+
this.keys = keys;
172+
this.values = values;
173+
}
174+
175+
@Override
176+
public int size() {
177+
return keys.size();
178+
}
179+
180+
@Override
181+
public org.apache.paimon.data.InternalArray keyArray() {
182+
return keys;
183+
}
184+
185+
@Override
186+
public org.apache.paimon.data.InternalArray valueArray() {
187+
return values;
188+
}
189+
}
190+
}
191+

0 commit comments

Comments
 (0)