Skip to main content
Glama
layout_test.ts6.34 kB
import { assertObjectMatch } from "@std/assert/object-match"; import { assertArrayIncludes, assertEquals } from "@std/assert"; import layout from "../../src/sandbox/layout.ts"; Deno.test(function createFrameReturnsFrame() { const frame = layout.createFrame("lamb of god"); assertObjectMatch( frame, { id: "lamb of god", x: 0, y: 0, width: 0, height: 0, rows: [], }, ); }); Deno.test(function createInitialFrameHasPosition() { const frame = layout.initialFrame("lamb of god"); assertObjectMatch( frame, { x: 0, y: 500, }, ); }); Deno.test(function createComponentReturnsComponent() { const component = layout.createComponent("soulless", 2); assertObjectMatch( component, { kind: "COMPONENT", id: "soulless", x: 0, y: 0, width: 240, height: 132.5, }, ); }); Deno.test(function createRowReturnsRow() { const row = layout.createRow("compromised"); assertObjectMatch( row, { items: [], id: "compromised", kind: "ROW", x: 0, y: 0, width: 0, height: 0, }, ); }); Deno.test(function addToRowAddsItemIdempotently() { const rootFrame = layout.initialFrame("a"); const aFrame = layout.createFrame("aFrame"); const aComponent = layout.createComponent("aComponent", 3); layout.addToRow(rootFrame, "row1", aFrame); assertEquals(rootFrame.rows.length, 1, "should have row"); assertArrayIncludes( rootFrame.rows[0].items, [aFrame], "has the new frame component in the array", ); layout.addToRow(rootFrame, "row1", aFrame); assertEquals( rootFrame.rows.length, 1, "should have only one row after another push", ); assertEquals( rootFrame.rows[0].items.length, 1, "should not have duplicate items", ); layout.addToRow(rootFrame, "row1", aComponent); assertEquals( rootFrame.rows.length, 1, "should have only one row after two pushes", ); assertEquals( rootFrame.rows[0].items.length, 2, "should have two items in the row", ); }); Deno.test(function calculateSizeAndPositionSingleComponent() { const rootFrame = layout.initialFrame("rootFrame"); const component = layout.createComponent("component", 2); layout.addToRow(rootFrame, "row 1", component); layout.calculateSizeAndPosition(rootFrame); // Wrong right now, commented out //assertObjectMatch(rootFrame, { // "id": "rootFrame", // "kind": "frame", // "x": 0, // "y": 500, // "width": 270, // "height": 250, // "rows": [ // { // "items": [ // { // "kind": "component", // "id": "component", // "x": 10, // "y": 512, // "width": 220, // "height": 250, // }, // ], // "id": "row 1", // "kind": "row", // "x": -15, // "y": 512, // "width": 270, // "height": 250, // }, // ], //}); }); Deno.test(function calculateSizeAndPositionOneRowFourComponents() { const rootFrame = layout.initialFrame("rootFrame"); const component1 = layout.createComponent("component 1", 2); const component2 = layout.createComponent("component 2", 2); const component3 = layout.createComponent("component 3", 2); const component4 = layout.createComponent("component 4", 2); const component5 = layout.createComponent("component 5", 2); layout.addToRow(rootFrame, "row 1", component1); layout.addToRow(rootFrame, "row 1", component2); layout.addToRow(rootFrame, "row 1", component3); layout.addToRow(rootFrame, "row 1", component4); layout.addToRow(rootFrame, "row 1", component5); layout.calculateSizeAndPosition(rootFrame); // These are wrong right now, so commented out. //assertObjectMatch(rootFrame, { // id: "rootFrame", // kind: "frame", // x: 0, // y: 500, // width: 1300, // height: 250, // rows: [ // { // items: [ // { // kind: "component", // id: "component 1", // x: -505, // y: 512, // width: 220, // height: 250, // }, // { // kind: "component", // id: "component 2", // x: -260, // y: 512, // width: 220, // height: 250, // }, // { // kind: "component", // id: "component 3", // x: -15, // y: 512, // width: 220, // height: 250, // }, // { // kind: "component", // id: "component 4", // x: 230, // y: 512, // width: 220, // height: 250, // }, // { // kind: "component", // id: "component 5", // x: 475, // y: 512, // width: 220, // height: 250, // }, // ], // id: "row 1", // kind: "row", // x: -530, // y: 512, // width: 1300, // height: 250, // }, // ], //}); }); Deno.test(function calculateSizeAndPositionOneRowSubFrame() { const rootFrame = layout.initialFrame("rootFrame"); const component1 = layout.createComponent("component 1", 2); layout.addToRow(rootFrame, "row 1", component1); const component2 = layout.createComponent("component 2", 2); layout.addToRow(rootFrame, "row 1", component2); const subFrame1 = layout.createFrame("subFrame 1"); const component3 = layout.createComponent("component 3", 2); const component4 = layout.createComponent("component 4", 2); layout.addToRow(subFrame1, "row 1", component3); layout.addToRow(subFrame1, "row 1", component4); layout.addToRow(rootFrame, "row 1", subFrame1); const component5 = layout.createComponent("component 5", 2); layout.addToRow(rootFrame, "row 1", component5); layout.calculateSizeAndPosition(rootFrame); }); Deno.test(function calculateSizeAndPositionOneSubFrame() { const rootFrame = layout.initialFrame("rootFrame"); const subFrame1 = layout.createFrame("subFrame 1"); const component1 = layout.createComponent("component 1", 2); layout.addToRow(subFrame1, "row 1", component1); layout.addToRow(rootFrame, "row 1", subFrame1); layout.calculateSizeAndPosition(rootFrame); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/systeminit/si'

If you have feedback or need assistance with the MCP directory API, please join our Discord server