More or less finalized the REST api.

This commit is contained in:
didier amyot committed 2023-06-13 11:42:59 -04:00
1 parent 872f841d74
commit 95e58a67df
5 files changed
+159 -7

No files matched your search

+59
View File
@@ -0,0 +1,59 @@
import { StringReader, readAll } from "../src/deps.ts";
import { Vector3D } from "../src/services/interfaces.ts";
import { WaveFrontServiceImpl } from "../src/services/wavefrontService.ts";
import { assertEquals } from 'https://deno.land/std/testing/asserts.ts';
Deno.test('WaveFrontServiceImpl happy path ', async (t) => {
const waveFrontService = new WaveFrontServiceImpl();
await t.step("test trivial transform", async () => {
const content = "line 1\nline2\nline3\n"
const reader = new StringReader(content);
const ret = waveFrontService.transformLine(reader, (s) => `hello ${s}`);
const expt = "hello line 1\nhello line2\nhello line3\n"
assertEquals(new TextDecoder().decode(await readAll(ret)), expt);
});
await t.step("test trivial transform (no final new line in original file) `", async () => {
const content = "line 1\nline2\nline3"
const reader = new StringReader(content);
const ret = waveFrontService.transformLine(reader, (s) => `hello ${s}`);
const expt = "hello line 1\nhello line2\nhello line3\n"
assertEquals(new TextDecoder().decode(await readAll(ret)), expt);
});
});
Deno.test('WaveFrontServiceImpl getLineTransformer', async (t) => {
const waveFrontService = new WaveFrontServiceImpl();
await t.step("trivial cases", () => {
const fn = waveFrontService.getLineTransformer([1, 2, 3], [10, 11, 12])
assertEquals(fn(''), '');
assertEquals(fn('hello'), 'hello');
assertEquals(fn('hello 1 2 3'), 'hello 1 2 3');
});
await t.step("transform cases", () => {
const scale: Vector3D = [5, 6, 7];
const translate: Vector3D = [10, 11, 12];
const fn = waveFrontService.getLineTransformer(scale, translate);
const expt = (x: number, y: number, z: number) => `v ${x * scale[0] + translate[0]} ${y * scale[1] + translate[1]} ${z * scale[2] + translate[2]}`;
const values = [-1, 2, 3, 10, 5.23, 34.56, -12.75 ]
for(const x of values){
for(const y of values){
for(const z of values){
assertEquals(fn(`v ${x} ${y} ${z}`), expt(x, y, z));
assertEquals(fn(`v ${x} ${y} ${z} `), expt(x, y, z));
assertEquals(fn(`v ${x} ${y} ${z} # foo bar`), expt(x, y, z));
}
}
}
});
})