mirror of
https://github.com/denoland/std.git
synced 2024-11-22 04:59:05 +00:00
d102a10235
* refactor: import from `@std/assert` * update
203 lines
6.4 KiB
TypeScript
203 lines
6.4 KiB
TypeScript
// Copyright 2018-2024 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { assertEquals } from "@std/assert";
|
|
import { UserAgent } from "./user_agent.ts";
|
|
|
|
Deno.test({
|
|
name: "UserAgent.prototype.browser",
|
|
async fn(t) {
|
|
const specs = (await import("./testdata/user_agent/browser-all.json", {
|
|
with: { type: "json" },
|
|
})).default;
|
|
for (const { desc, ua, expect: { major, name, version } } of specs) {
|
|
await t.step({
|
|
name: desc,
|
|
fn() {
|
|
const actual = new UserAgent(ua);
|
|
assertEquals(actual.browser, {
|
|
major: major === "undefined" ? undefined : major,
|
|
name: name === "undefined" ? undefined : name,
|
|
version: version === "undefined" ? undefined : version,
|
|
});
|
|
},
|
|
});
|
|
}
|
|
},
|
|
});
|
|
|
|
Deno.test({
|
|
name: "UserAgent.prototype.cpu",
|
|
async fn(t) {
|
|
const specs = (await import("./testdata/user_agent/cpu-all.json", {
|
|
with: { type: "json" },
|
|
})).default;
|
|
for (const { desc: name, ua, expect } of specs) {
|
|
await t.step({
|
|
name,
|
|
fn() {
|
|
const actual = new UserAgent(ua);
|
|
assertEquals(actual.cpu, expect);
|
|
},
|
|
});
|
|
}
|
|
},
|
|
});
|
|
|
|
Deno.test({
|
|
name: "UserAgent.prototype.device",
|
|
async fn(t) {
|
|
const specs = (await import("./testdata/user_agent/device-all.json", {
|
|
with: { type: "json" },
|
|
})).default;
|
|
for (const { desc: name, ua, expect: { vendor, model, type } } of specs) {
|
|
await t.step({
|
|
name,
|
|
fn() {
|
|
const actual = new UserAgent(ua);
|
|
assertEquals(actual.device, {
|
|
vendor: vendor === "undefined" ? undefined : vendor,
|
|
model: model === "undefined" ? undefined : model,
|
|
type: type === "undefined" ? undefined : type,
|
|
});
|
|
},
|
|
});
|
|
}
|
|
},
|
|
});
|
|
|
|
Deno.test({
|
|
name: "UserAgent.prototype.engine",
|
|
async fn(t) {
|
|
const specs = (await import("./testdata/user_agent/engine-all.json", {
|
|
with: { type: "json" },
|
|
})).default;
|
|
for (const { desc, ua, expect: { name, version } } of specs) {
|
|
await t.step({
|
|
name: desc,
|
|
fn() {
|
|
const actual = new UserAgent(ua);
|
|
assertEquals(actual.engine, {
|
|
name: name === "undefined" ? undefined : name,
|
|
version: version === "undefined" ? undefined : version,
|
|
});
|
|
},
|
|
});
|
|
}
|
|
},
|
|
});
|
|
|
|
Deno.test({
|
|
name: "UserAgent.prototype.os",
|
|
async fn(t) {
|
|
const specs = (await import("./testdata/user_agent/os-all.json", {
|
|
with: { type: "json" },
|
|
})).default;
|
|
for (const { desc, ua, expect: { name, version } } of specs) {
|
|
await t.step({
|
|
name: desc,
|
|
fn() {
|
|
const actual = new UserAgent(ua);
|
|
assertEquals(actual.os, {
|
|
name: name === "undefined" ? undefined : name,
|
|
version: version === "undefined" ? undefined : version,
|
|
});
|
|
},
|
|
});
|
|
}
|
|
},
|
|
});
|
|
|
|
Deno.test("UserAgent.constructor() accepts null", () => {
|
|
const ua = new UserAgent(null);
|
|
assertEquals(ua.ua, "");
|
|
assertEquals(ua.browser, {
|
|
name: undefined,
|
|
version: undefined,
|
|
major: undefined,
|
|
});
|
|
assertEquals(ua.cpu, { architecture: undefined });
|
|
assertEquals(ua.device, {
|
|
model: undefined,
|
|
type: undefined,
|
|
vendor: undefined,
|
|
});
|
|
assertEquals(ua.engine, { name: undefined, version: undefined });
|
|
assertEquals(ua.os, { name: undefined, version: undefined });
|
|
});
|
|
|
|
Deno.test("UserAgent.toString() returns ua itself", () => {
|
|
const ua = new UserAgent(
|
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36",
|
|
);
|
|
assertEquals(ua.toString(), ua.ua);
|
|
});
|
|
|
|
Deno.test("UserAgent.toJSON() returns the object { browser, cpu, device, engine, os, ua }", () => {
|
|
const ua = new UserAgent(
|
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36",
|
|
);
|
|
assertEquals(ua.toJSON(), {
|
|
browser: { name: "Chrome", version: "64.0.3282.140", major: "64" },
|
|
cpu: { architecture: "amd64" },
|
|
device: { model: undefined, type: undefined, vendor: undefined },
|
|
engine: { name: "Blink", version: "64.0.3282.140" },
|
|
os: { name: "Linux", version: "x86_64" },
|
|
ua:
|
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36",
|
|
});
|
|
});
|
|
|
|
Deno.test("UserAgent supports custom inspect in Deno", () => {
|
|
const ua = new UserAgent(
|
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36",
|
|
);
|
|
assertEquals(
|
|
Deno.inspect(ua),
|
|
`UserAgent {
|
|
browser: { name: "Chrome", version: "64.0.3282.140", major: "64" },
|
|
cpu: { architecture: "amd64" },
|
|
device: { model: undefined, type: undefined, vendor: undefined },
|
|
engine: { name: "Blink", version: "64.0.3282.140" },
|
|
os: { name: "Linux", version: "x86_64" },
|
|
ua: "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36"
|
|
}`,
|
|
);
|
|
});
|
|
|
|
Deno.test("UserAgent supports custom inspect in Node.js", async () => {
|
|
const { inspect } = await import("node:util");
|
|
|
|
const ua = new UserAgent(
|
|
"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36",
|
|
);
|
|
// Needs to delete Deno.customInspect to enable Node's inspect
|
|
// deno-lint-ignore no-explicit-any
|
|
(ua as any)[Symbol.for("Deno.customInspect")] = undefined;
|
|
assertEquals(
|
|
inspect(ua),
|
|
`UserAgent {
|
|
browser: { name: 'Chrome', version: '64.0.3282.140', major: '64' },
|
|
cpu: { architecture: 'amd64' },
|
|
device: { model: undefined, type: undefined, vendor: undefined },
|
|
engine: { name: 'Blink', version: '64.0.3282.140' },
|
|
os: { name: 'Linux', version: 'x86_64' },
|
|
ua: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'
|
|
}`,
|
|
);
|
|
assertEquals(
|
|
inspect(ua, { depth: null }),
|
|
`UserAgent {
|
|
browser: { name: 'Chrome', version: '64.0.3282.140', major: '64' },
|
|
cpu: { architecture: 'amd64' },
|
|
device: { model: undefined, type: undefined, vendor: undefined },
|
|
engine: { name: 'Blink', version: '64.0.3282.140' },
|
|
os: { name: 'Linux', version: 'x86_64' },
|
|
ua: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'
|
|
}`,
|
|
);
|
|
assertEquals(
|
|
inspect([[ua]], { depth: 1 }),
|
|
`[ [ [UserAgent] ] ]`,
|
|
);
|
|
});
|