Files
2026-07-13 12:25:07 +08:00

198 lines
7.0 KiB
JavaScript

// ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
// ┃ ██████ ██████ ██████ █ █ █ █ █ █▄ ▀███ █ ┃
// ┃ ▄▄▄▄▄█ █▄▄▄▄▄ ▄▄▄▄▄█ ▀▀▀▀▀█▀▀▀▀▀ █ ▀▀▀▀▀█ ████████▌▐███ ███▄ ▀█ █ ▀▀▀▀▀ ┃
// ┃ █▀▀▀▀▀ █▀▀▀▀▀ █▀██▀▀ ▄▄▄▄▄ █ ▄▄▄▄▄█ ▄▄▄▄▄█ ████████▌▐███ █████▄ █ ▄▄▄▄▄ ┃
// ┃ █ ██████ █ ▀█▄ █ ██████ █ ███▌▐███ ███████▄ █ ┃
// ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
// ┃ Copyright (c) 2017, the Perspective Authors. ┃
// ┃ ╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌ ┃
// ┃ This file is part of the Perspective library, distributed under the terms ┃
// ┃ of the [Apache License 2.0](https://www.apache.org/licenses/LICENSE-2.0). ┃
// ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
import { test, expect } from "@perspective-dev/test";
import perspective from "./perspective_client";
const data = {
w: [
1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, -1.5, -3.5, -1.5, -4.5, -9.5,
-5.5, -8.5, -7.5,
],
x: [1, 2, 3, 4, 4, 3, 2, 1, 3, 4, 2, 1, 4, 3, 1, 2],
y: [
"a",
"b",
"c",
"d",
"a",
"b",
"c",
"d",
"a",
"b",
"c",
"d",
"a",
"b",
"c",
"d",
],
z: [
true,
false,
true,
false,
true,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
false,
],
};
test.describe("get_min_max", function () {
test.describe("0 sided", function () {
test("float column", async function () {
var table = await perspective.table(data);
var view = await table.view({});
const range = await view.get_min_max("w");
expect(range).toEqual([-9.5, 8.5]);
view.delete();
table.delete();
});
test("int column", async function () {
var table = await perspective.table(data);
var view = await table.view({});
const range = await view.get_min_max("x");
expect(range).toEqual([1, 4]);
view.delete();
table.delete();
});
test("string column", async function () {
var table = await perspective.table(data);
var view = await table.view({});
const range = await view.get_min_max("y");
expect(range).toEqual(["a", "d"]);
view.delete();
table.delete();
});
});
test.describe("1 sided", function () {
test("float col", async function () {
var table = await perspective.table(data);
var view = await table.view({
group_by: ["y"],
});
const cols = await view.get_min_max("w");
expect(cols).toEqual([-4, 1]);
view.delete();
table.delete();
});
test("int col", async function () {
var table = await perspective.table(data);
var view = await table.view({
group_by: ["y"],
});
const cols = await view.get_min_max("x");
expect(cols).toEqual([8, 12]);
view.delete();
table.delete();
});
test("string col", async function () {
var table = await perspective.table(data);
var view = await table.view({
group_by: ["y"],
});
const cols = await view.get_min_max("y");
expect(cols).toEqual([4, 4]);
view.delete();
table.delete();
});
});
test.describe("2 sided", function () {
test("float col", async function () {
var table = await perspective.table(data);
var view = await table.view({
group_by: ["y"],
split_by: ["z"],
});
const cols = await view.get_min_max("w");
expect(cols).toEqual([-9.5, 9.5]);
view.delete();
table.delete();
});
test("int column", async function () {
var table = await perspective.table(data);
var view = await table.view({
group_by: ["y"],
split_by: ["z"],
});
const cols = await view.get_min_max("x");
expect(cols).toEqual([1, 8]);
view.delete();
table.delete();
});
test("string column", async function () {
var table = await perspective.table(data);
var view = await table.view({
group_by: ["y"],
split_by: ["z"],
});
const cols = await view.get_min_max("y");
expect(cols).toEqual([1, 3]);
view.delete();
table.delete();
});
});
test.describe("column only", function () {
test("float col", async function () {
var table = await perspective.table(data);
var view = await table.view({
split_by: ["z"],
});
const cols = await view.get_min_max("w");
expect(cols).toEqual([-9.5, 8.5]);
view.delete();
table.delete();
});
test("int col", async function () {
var table = await perspective.table(data);
var view = await table.view({
split_by: ["z"],
});
const cols = await view.get_min_max("x");
expect(cols).toEqual([1, 4]);
view.delete();
table.delete();
});
test("string col", async function () {
var table = await perspective.table(data);
var view = await table.view({
split_by: ["z"],
});
const cols = await view.get_min_max("y");
expect(cols).toEqual(["a", "d"]);
view.delete();
table.delete();
});
});
});