Skip to content

Commit d720988

Browse files
committed
[browser/merge][l]: add test for merge
1 parent 6607029 commit d720988

1 file changed

Lines changed: 100 additions & 0 deletions

File tree

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
describe("Merge", function () {
2+
3+
it("test outer merge", function () {
4+
let data = [ [ 'K0', 'k0', 'A0', 'B0' ], [ 'k0', 'K1', 'A1', 'B1' ],
5+
[ 'K1', 'K0', 'A2', 'B2' ], [ 'K2', 'K2', 'A3', 'B3' ] ];
6+
7+
let data2 = [ [ 'K0', 'k0', 'C0', 'D0' ], [ 'K1', 'K0', 'C1', 'D1' ],
8+
[ 'K1', 'K0', 'C2', 'D2' ], [ 'K2', 'K0', 'C3', 'D3' ] ];
9+
10+
let colum1 = [ 'Key1', 'Key2', 'A', 'B' ];
11+
let colum2 = [ 'Key1', 'Key2', 'A', 'D' ];
12+
13+
let df1 = new dfd.DataFrame(data, { columns: colum1 });
14+
let df2 = new dfd.DataFrame(data2, { columns: colum2 });
15+
let merge_df = dfd.merge({ left: df1, right: df2, on: [ "Key1", "Key2" ], how: "outer" });
16+
17+
let output_data = [
18+
[ 'K0', 'k0', 'A0', 'B0', 'C0', 'D0' ],
19+
[ 'k0', 'K1', 'A1', 'B1', NaN, NaN ],
20+
[ 'K1', 'K0', 'A2', 'B2', 'C1', 'D1' ],
21+
[ 'K1', 'K0', 'A2', 'B2', 'C2', 'D2' ],
22+
[ 'K2', 'K2', 'A3', 'B3', NaN, NaN ],
23+
[ 'K2', 'K0', NaN, NaN, 'C3', 'D3' ]
24+
];
25+
26+
assert.deepEqual(merge_df.values, output_data);
27+
});
28+
29+
it("test inner merge", function () {
30+
let data = [ [ 'K0', 'k0', 'A0', 'B0' ], [ 'k0', 'K1', 'A1', 'B1' ],
31+
[ 'K1', 'K0', 'A2', 'B2' ], [ 'K2', 'K2', 'A3', 'B3' ] ];
32+
33+
let data2 = [ [ 'K0', 'k0', 'C0', 'D0' ], [ 'K1', 'K0', 'C1', 'D1' ],
34+
[ 'K1', 'K0', 'C2', 'D2' ], [ 'K2', 'K0', 'C3', 'D3' ] ];
35+
36+
let colum1 = [ 'Key1', 'Key2', 'A', 'B' ];
37+
let colum2 = [ 'Key1', 'Key2', 'A', 'D' ];
38+
39+
let df1 = new dfd.DataFrame(data, { columns: colum1 });
40+
let df2 = new dfd.DataFrame(data2, { columns: colum2 });
41+
let merge_df = dfd.merge({ left: df1, right: df2, on: [ "Key1", "Key2" ], how: "inner" });
42+
43+
let output_data = [
44+
[ 'K0', 'k0', 'A0', 'B0', 'C0', 'D0' ],
45+
[ 'K1', 'K0', 'A2', 'B2', 'C1', 'D1' ],
46+
[ 'K1', 'K0', 'A2', 'B2', 'C2', 'D2' ]
47+
];
48+
49+
assert.deepEqual(merge_df.values, output_data);
50+
});
51+
52+
it("test left merge", function () {
53+
let data = [ [ 'K0', 'k0', 'A0', 'B0' ], [ 'k0', 'K1', 'A1', 'B1' ],
54+
[ 'K1', 'K0', 'A2', 'B2' ], [ 'K2', 'K2', 'A3', 'B3' ] ];
55+
56+
let data2 = [ [ 'K0', 'k0', 'C0', 'D0' ], [ 'K1', 'K0', 'C1', 'D1' ],
57+
[ 'K1', 'K0', 'C2', 'D2' ], [ 'K2', 'K0', 'C3', 'D3' ] ];
58+
59+
let colum1 = [ 'Key1', 'Key2', 'A', 'B' ];
60+
let colum2 = [ 'Key1', 'Key2', 'A', 'D' ];
61+
62+
let df1 = new dfd.DataFrame(data, { columns: colum1 });
63+
let df2 = new dfd.DataFrame(data2, { columns: colum2 });
64+
let merge_df = dfd.merge({ left: df1, right: df2, on: [ "Key1", "Key2" ], how: "left" });
65+
66+
let output_data = [
67+
[ 'K0', 'k0', 'A0', 'B0', 'C0', 'D0' ],
68+
[ 'k0', 'K1', 'A1', 'B1', NaN, NaN ],
69+
[ 'K1', 'K0', 'A2', 'B2', 'C1', 'D1' ],
70+
[ 'K1', 'K0', 'A2', 'B2', 'C2', 'D2' ],
71+
[ 'K2', 'K2', 'A3', 'B3', NaN, NaN ]
72+
];
73+
74+
assert.deepEqual(merge_df.values, output_data);
75+
});
76+
77+
it("test right merge", function () {
78+
let data = [ [ 'K0', 'k0', 'A0', 'B0' ], [ 'k0', 'K1', 'A1', 'B1' ],
79+
[ 'K1', 'K0', 'A2', 'B2' ], [ 'K2', 'K2', 'A3', 'B3' ] ];
80+
81+
let data2 = [ [ 'K0', 'k0', 'C0', 'D0' ], [ 'K1', 'K0', 'C1', 'D1' ],
82+
[ 'K1', 'K0', 'C2', 'D2' ], [ 'K2', 'K0', 'C3', 'D3' ] ];
83+
84+
let colum1 = [ 'Key1', 'Key2', 'A', 'B' ];
85+
let colum2 = [ 'Key1', 'Key2', 'A', 'D' ];
86+
87+
let df1 = new dfd.DataFrame(data, { columns: colum1 });
88+
let df2 = new dfd.DataFrame(data2, { columns: colum2 });
89+
let merge_df = dfd.merge({ left: df1, right: df2, on: [ "Key1", "Key2" ], how: "right" });
90+
91+
let output_data = [
92+
[ 'K0', 'k0', 'A0', 'B0', 'C0', 'D0' ],
93+
[ 'K1', 'K0', 'A2', 'B2', 'C1', 'D1' ],
94+
[ 'K1', 'K0', 'A2', 'B2', 'C2', 'D2' ],
95+
[ 'K2', 'K0', NaN, NaN, 'C3', 'D3' ]
96+
];
97+
98+
assert.deepEqual(merge_df.values, output_data);
99+
});
100+
})

0 commit comments

Comments
 (0)