Skip to content

Commit 6607029

Browse files
committed
[node/merge][l]: add test for merge
1 parent 7f88a19 commit 6607029

2 files changed

Lines changed: 106 additions & 1 deletion

File tree

src/danfojs-node/package.json

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

0 commit comments

Comments
 (0)