Fix regression in device.unpack

This commit is contained in:
Zaid Abdulla committed 2019-07-27 01:03:19 -07:00
1 parent 8b1f046a3f
commit 3f3fbd81d0
3 files changed
+83 -4

No files matched your search

+77
View File
@@ -1,6 +1,9 @@
import ava from "ava";
import Path from "../lib/common/path";
import * as device from "../lib/device";
import PathSet from "../lib/common/path-set";
import VersionedMap from "../lib/versioned-map";
import { Attributes } from "../lib/types";
ava("getAliasDeclarations", t => {
const path = Path.parse("a.[aa:10,bb.[aaa:100].cc:1].b");
@@ -18,3 +21,77 @@ ava("getAliasDeclarations", t => {
t.is(d.defer, true);
}
});
ava("unpack", t => {
const now = Date.now();
const deviceData = {
paths: new PathSet(),
timestamps: new VersionedMap<Path, number>(),
attributes: new VersionedMap<Path, Attributes>(),
trackers: new Map<Path, { [name: string]: number }>(),
changes: new Set<string>()
};
device.set(deviceData, Path.parse("a.1.b"), now, {
value: [now, ["b", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.c"), now, {
value: [now, ["c", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.a.1.a"), now, {
value: [now, ["", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.a.1.b"), now, {
value: [now, ["b1", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.a.1.c"), now, {
value: [now, ["c1", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.a.2.a"), now, {
value: [now, ["", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.a.2.b"), now, {
value: [now, ["b2", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.1.a.2.c"), now, {
value: [now, ["c2", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.b"), now, {
value: [now, ["b", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.c"), now, {
value: [now, ["c", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.a.1.a"), now, {
value: [now, ["", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.a.1.b"), now, {
value: [now, ["b1", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.a.1.c"), now, {
value: [now, ["c1", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.a.2.a"), now, {
value: [now, ["", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.a.2.b"), now, {
value: [now, ["c1", "xsd:string"]]
});
device.set(deviceData, Path.parse("a.2.a.2.c"), now, {
value: [now, ["b1", "xsd:string"]]
});
let unpacked: Path[];
unpacked = device.unpack(
deviceData,
Path.parse("a.[b:b,c:c].a.[b:b1,c:c1].a")
);
t.is(unpacked.length, 2);
t.is(unpacked[0].toString(), "a.1.a.1.a");
t.is(unpacked[1].toString(), "a.2.a.1.a");
unpacked = device.unpack(deviceData, Path.parse("a.*.a.[b:c1,c:b1].a"));
t.is(unpacked.length, 1);
t.is(unpacked[0].toString(), "a.2.a.2.a");
});