// exportimport1.js

t = new ToolTest("exportimport1");

c = t.startDB("foo");
assert.eq(0, c.count(), "setup1");
var arr = ["x", undefined, "y", undefined];
c.save({a: 22, b: arr});
assert.eq(1, c.count(), "setup2");

t.runTool("export", "--out", t.extFile, "-d", t.baseName, "-c", "foo");

c.drop();
assert.eq(0, c.count(), `after drop -d ${t.baseName} -c foo`);

t.runTool("import", "--file", t.extFile, "-d", t.baseName, "-c", "foo");
assert.soon("c.findOne()", "no data after sleep");
assert.eq(1, c.count(), "after restore 2");
var doc = c.findOne();
assert.eq(22, doc.a, "after restore 2");
for (var i = 0; i < arr.length; i++) {
    assert.eq(arr[i], doc.b[i], "after restore array: " + i);
}

// now with --jsonArray

t.runTool("export", "--jsonArray", "--out", t.extFile, "-d", t.baseName, "-c", "foo");

c.drop();
assert.eq(0, c.count(), `after drop -d ${t.baseName} -c foo`);

t.runTool("import", "--jsonArray", "--file", t.extFile, "-d", t.baseName, "-c", "foo");
assert.soon("c.findOne()", "no data after sleep");
assert.eq(1, c.count(), "after restore 2");
assert.eq(22, c.findOne().a, "after restore 2");

c.drop();
assert.eq(0, c.count(), `after drop -d ${t.baseName} -c foo`);

arr = ["a", undefined, "c"];
c.save({a: arr});
assert.eq(1, c.count(), "setup2");
t.runTool("export", "--out", t.extFile, "-d", t.baseName, "-c", "foo");
c.drop();
assert.eq(0, c.count(), `after drop -d ${t.baseName} -c foo`);

t.runTool("import", "--file", t.extFile, "-d", t.baseName, "-c", "foo");
assert.soon("c.findOne()", "no data after sleep");
assert.eq(1, c.count(), "after restore 2");
var doc = c.findOne();
for (var i = 0; i < arr.length; i++) {
    assert.eq(arr[i], doc.a[i], "after restore array: " + i);
}

t.stop();
