Skip to content

Commit

Permalink
Added tests
Browse files Browse the repository at this point in the history
  • Loading branch information
crisfervil committed Mar 29, 2017
1 parent 7aa2d38 commit 9de6c98
Show file tree
Hide file tree
Showing 2 changed files with 44 additions and 12 deletions.
33 changes: 33 additions & 0 deletions test/DataTable.ts
Expand Up @@ -59,4 +59,37 @@ describe("DataTable", function() {
assert.deepEqual(dt.rows[0].val1,undefined);
assert.deepEqual(dt.rows[1].val1,3);
});

it("Renames a column", function(){

var dt = new DataTable();
dt.rows.push({val1:1,val2:2},
{val1:2,val3:3});

dt.renameColumn('val1','val4');
dt.renameColumn('val2','val5');

// val1 and val2 should have gone
assert.deepEqual(dt.rows[0],{val4:1,val5:2});
assert.deepEqual(dt.rows[1],{val4:2,val3:3});
});

it("Removes a column", function(){

var dt = new DataTable();
dt.rows.push({val1:1,val2:2},
{val1:2,val3:3});

dt.removeColumn('val2');

// val2 should have gone
assert.deepEqual(dt.rows[0],{val1:1});
assert.deepEqual(dt.rows[1],{val1:2,val3:3});

dt.removeColumn('val3');

// val3 should have gone
assert.deepEqual(dt.rows[0],{val1:1});
assert.deepEqual(dt.rows[1],{val1:2});
});
});
23 changes: 11 additions & 12 deletions test/DataTableSerializer.ts
@@ -1,5 +1,4 @@
import {DataTable} from "../src/DataTable";
import {DataTableSerializer} from "../src/DataTableSerializer";

import {Guid} from "../src/Guid";
import assert = require("assert");
Expand All @@ -21,9 +20,9 @@ describe("DataTableSerializer", function() {
d1.rows.push({ prop1: Guid.create().toString(), prop2: "value2&" }); // use xml not permitted values
d1.rows.push({ prop1: true, prop2: "val\tue2\n", prop3: "" }); // use xml not permitted values
d1.rows.push({ prop1: false,prop2:new Date(), prop3: 12, prop4: 12.5 });
DataTableSerializer.save(d1,fileName);
d1.save(fileName);

var d2 = DataTableSerializer.load(fileName);
var d2 = DataTable.load(fileName);
assert.deepEqual(d2, d1, JSON.stringify(d2, null, 4));

});
Expand All @@ -38,15 +37,15 @@ describe("DataTableSerializer", function() {
d1.rows.push({ prop1: true, prop2: "val\tue2\n", prop3: "0001", "1 <&\'>\" ":"test" }); // use xml not permitted values as property names
d1.rows.push({ prop1: false, prop2: new Date(), prop3: 12, prop4: 12.5, prop5: "12345" });
d1.rows.push({ prop1: "whatever", prop2: { type: "myType", value: "my value" } });
DataTableSerializer.save(d1,fileName);
d1.save(fileName);

var d2 = DataTableSerializer.load(fileName);
var d2 = DataTable.load(fileName);
assert.deepEqual(d2, d1, JSON.stringify(d2, null, 4));
});

it("Loads and reads Excel data", function() {
var fileName = "test/assets/Book1.xlsx";
var dt = DataTableSerializer.load(fileName);
var dt = DataTable.load(fileName);

assert.equal(dt.name,"Sheet1");
assert.equal(dt.rows.length,7);
Expand All @@ -70,20 +69,20 @@ describe("DataTableSerializer", function() {
d1.rows.push({ prop1: false, prop2: new Date(), prop3: 12, prop4: 12.5, prop5: "12345" });
d1.rows.push({ prop1: "whatever", prop2: { type: "myType", value: "my value" } });

DataTableSerializer.save(d1,fileName);
d1.save(fileName);

// I should be able to read what I've just written
var d2=DataTableSerializer.load(fileName);
var d2=DataTable.load(fileName);
});

it("Writes an empty Excel table", function() {
var fileName = "test/tmp/book2.xlsx";

var d1 = new DataTable();
DataTableSerializer.save(d1,fileName);
d1.save(fileName);

// I should be able to read what I've just written
var d2=DataTableSerializer.load(fileName);
var d2=DataTable.load(fileName);
});

it("Throws an error on load when the extension is not supported", function() {
Expand All @@ -93,7 +92,7 @@ describe("DataTableSerializer", function() {

assert.throws(()=>{

DataTableSerializer.load(fileName);
DataTable.load(fileName);

},`Format '${ext}' not supported`);

Expand All @@ -108,7 +107,7 @@ describe("DataTableSerializer", function() {

assert.throws(()=>{

DataTableSerializer.save(d1,fileName);
d1.save(fileName);

},`Format '${ext}' not supported`);

Expand Down

0 comments on commit 9de6c98

Please sign in to comment.