You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
345 lines
5.3 KiB
JavaScript
345 lines
5.3 KiB
JavaScript
import { Tipsify } from "../../Source/Cesium.js";
|
|
|
|
describe("Core/Tipsify", function () {
|
|
it("can calculate the ACMR", function () {
|
|
//Hexagon formed from 6 triangles, 7 vertices
|
|
expect(
|
|
Tipsify.calculateACMR({
|
|
indices: [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 6, 0, 1, 6],
|
|
maximumIndex: 6,
|
|
cacheSize: 3,
|
|
})
|
|
).toEqual(2);
|
|
});
|
|
|
|
it("can calculate the ACMR without a specified maximum index", function () {
|
|
expect(
|
|
Tipsify.calculateACMR({
|
|
indices: [0, 1, 2, 0, 2, 3, 0, 3, 4, 0, 4, 5, 0, 5, 6, 0, 1, 6],
|
|
cacheSize: 3,
|
|
})
|
|
).toEqual(2);
|
|
});
|
|
|
|
it("throws when calculating ACMR (1 of 4)", function () {
|
|
expect(function () {
|
|
Tipsify.calculateACMR({
|
|
indices: undefined,
|
|
maximumIndex: 1,
|
|
cacheSize: 3,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when calculating ACMR (2 of 4)", function () {
|
|
expect(function () {
|
|
Tipsify.calculateACMR({
|
|
indices: [1, 2, 3, 4],
|
|
maximumIndex: 1,
|
|
cacheSize: 3,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when calculating ACMR (3 of 4)", function () {
|
|
expect(function () {
|
|
Tipsify.calculateACMR({
|
|
indices: [0, 1, 2],
|
|
maximumIndex: -1,
|
|
cacheSize: 2,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when calculating ACMR (4 of 4)", function () {
|
|
expect(function () {
|
|
Tipsify.calculateACMR({
|
|
indices: [0, 1, 2],
|
|
maximumIndex: 2,
|
|
cacheSize: 2,
|
|
});
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when executing Tipsify (1 of 5)", function () {
|
|
expect(function () {
|
|
Tipsify.tipsify({ indices: undefined, maximumIndex: 1, cacheSize: 3 });
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when executing Tipsify (2 of 5)", function () {
|
|
expect(function () {
|
|
Tipsify.tipsify({ indices: [1, 2, 3, 4], maximumIndex: 1, cacheSize: 3 });
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when executing Tipsify (3 of 5)", function () {
|
|
expect(function () {
|
|
Tipsify.tipsify({ indices: [1, 2, 3], maximumIndex: -1, cacheSize: 3 });
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when executing Tipsify (4 of 5)", function () {
|
|
expect(function () {
|
|
Tipsify.tipsify({ indices: [0, 1, 2], maximumIndex: 2, cacheSize: 2 });
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("throws when executing Tipsify (5 of 5)", function () {
|
|
expect(function () {
|
|
Tipsify.tipsify();
|
|
}).toThrowDeveloperError();
|
|
});
|
|
|
|
it("can lower ACMR using the Tipsify algorithm", function () {
|
|
var indices = [
|
|
0,
|
|
1,
|
|
7,
|
|
1,
|
|
7,
|
|
8,
|
|
1,
|
|
2,
|
|
8,
|
|
2,
|
|
8,
|
|
9,
|
|
2,
|
|
3,
|
|
9,
|
|
3,
|
|
9,
|
|
10,
|
|
3,
|
|
4,
|
|
10,
|
|
4,
|
|
10,
|
|
11,
|
|
4,
|
|
5,
|
|
11,
|
|
5,
|
|
11,
|
|
12,
|
|
6,
|
|
13,
|
|
14,
|
|
6,
|
|
7,
|
|
14,
|
|
7,
|
|
14,
|
|
15,
|
|
7,
|
|
8,
|
|
15,
|
|
8,
|
|
15,
|
|
16,
|
|
8,
|
|
9,
|
|
16,
|
|
9,
|
|
16,
|
|
17,
|
|
9,
|
|
10,
|
|
17,
|
|
10,
|
|
17,
|
|
18,
|
|
10,
|
|
11,
|
|
18,
|
|
11,
|
|
18,
|
|
19,
|
|
11,
|
|
12,
|
|
19,
|
|
12,
|
|
19,
|
|
20,
|
|
13,
|
|
21,
|
|
22,
|
|
13,
|
|
14,
|
|
22,
|
|
14,
|
|
22,
|
|
23,
|
|
14,
|
|
15,
|
|
23,
|
|
15,
|
|
23,
|
|
24,
|
|
15,
|
|
16,
|
|
24,
|
|
16,
|
|
24,
|
|
25,
|
|
16,
|
|
17,
|
|
25,
|
|
17,
|
|
25,
|
|
26,
|
|
17,
|
|
18,
|
|
26,
|
|
18,
|
|
26,
|
|
27,
|
|
18,
|
|
19,
|
|
27,
|
|
19,
|
|
27,
|
|
28,
|
|
19,
|
|
20,
|
|
28,
|
|
];
|
|
var acmrBefore = Tipsify.calculateACMR({
|
|
indices: indices,
|
|
maximumIndex: 28,
|
|
cacheSize: 6,
|
|
});
|
|
var result = Tipsify.tipsify({
|
|
indices: indices,
|
|
maximumIndex: 28,
|
|
cacheSize: 6,
|
|
});
|
|
var acmrAfter = Tipsify.calculateACMR({
|
|
indices: result,
|
|
maximumIndex: 28,
|
|
cacheSize: 6,
|
|
});
|
|
expect(acmrAfter).toBeLessThan(acmrBefore);
|
|
});
|
|
|
|
it("can Tipsify without knowing the maximum index", function () {
|
|
var indices = [
|
|
0,
|
|
1,
|
|
7,
|
|
1,
|
|
7,
|
|
8,
|
|
1,
|
|
2,
|
|
8,
|
|
2,
|
|
8,
|
|
9,
|
|
2,
|
|
3,
|
|
9,
|
|
3,
|
|
9,
|
|
10,
|
|
3,
|
|
4,
|
|
10,
|
|
4,
|
|
10,
|
|
11,
|
|
4,
|
|
5,
|
|
11,
|
|
5,
|
|
11,
|
|
12,
|
|
6,
|
|
13,
|
|
14,
|
|
6,
|
|
7,
|
|
14,
|
|
7,
|
|
14,
|
|
15,
|
|
7,
|
|
8,
|
|
15,
|
|
8,
|
|
15,
|
|
16,
|
|
8,
|
|
9,
|
|
16,
|
|
9,
|
|
16,
|
|
17,
|
|
9,
|
|
10,
|
|
17,
|
|
10,
|
|
17,
|
|
18,
|
|
10,
|
|
11,
|
|
18,
|
|
11,
|
|
18,
|
|
19,
|
|
11,
|
|
12,
|
|
19,
|
|
12,
|
|
19,
|
|
20,
|
|
13,
|
|
21,
|
|
22,
|
|
13,
|
|
14,
|
|
22,
|
|
14,
|
|
22,
|
|
23,
|
|
14,
|
|
15,
|
|
23,
|
|
15,
|
|
23,
|
|
24,
|
|
15,
|
|
16,
|
|
24,
|
|
16,
|
|
24,
|
|
25,
|
|
16,
|
|
17,
|
|
25,
|
|
17,
|
|
25,
|
|
26,
|
|
17,
|
|
18,
|
|
26,
|
|
18,
|
|
26,
|
|
27,
|
|
18,
|
|
19,
|
|
27,
|
|
19,
|
|
27,
|
|
28,
|
|
19,
|
|
20,
|
|
28,
|
|
];
|
|
expect(Tipsify.tipsify({ indices: indices, cacheSize: 6 })).toEqual(
|
|
Tipsify.tipsify({ indices: indices, maximumIndex: 28, cacheSize: 6 })
|
|
);
|
|
});
|
|
});
|