# test.govlab/quality/core/predicates/code-point.predicate.test.ts

> 55 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-predicates-code-point-predicate-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/predicates/code-point.predicate.test.ts.txt

Listed in [test.govlab/quality/core/predicates](https://banes-lab.com/api/source/testing/test.govlab/quality/core/predicates.md), before [test.govlab/quality/core/predicates/concept.predicate.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/predicates/concept.predicate.test.ts.md).

## Contained in

- [test.govlab/quality/core/predicates](https://banes-lab.com/anatomy/testing/folder-testing-test-govlab-quality-core-predicates.md)

## Source

```typescript
import {
    isAsciiAlpha,
    isAsciiDigit,
    isAsciiLower,
    isAsciiUpper,
    isCssNameChar,
    isDot,
    isIdentChar,
    isKebabChar,
    isSnakeTail,
} from "@govlab/quality/core/predicates/code-point.predicate.ts";
import assert from "node:assert/strict";
import { test } from "vitest";

const codeOf = function codeOf(ch: string): number {
    return ch.codePointAt(0) ?? 0;
};

test("isAsciiUpper and isAsciiLower split the ASCII letters by case", () => {
    assert.equal(isAsciiUpper(codeOf("A")), true);
    assert.equal(isAsciiUpper(codeOf("a")), false);
    assert.equal(isAsciiLower(codeOf("z")), true);
    assert.equal(isAsciiLower(codeOf("Z")), false);
});

test("isAsciiAlpha and isAsciiDigit separate letters from digits and reject a missing code", () => {
    assert.equal(isAsciiAlpha(codeOf("q")), true);
    assert.equal(isAsciiAlpha(codeOf("7")), false);
    assert.equal(isAsciiDigit(codeOf("7")), true);
    assert.equal(isAsciiDigit(), false);
});

test("isKebabChar accepts lowercase letters, digits and the hyphen only", () => {
    assert.equal(isKebabChar(codeOf("a")), true);
    assert.equal(isKebabChar(codeOf("-")), true);
    assert.equal(isKebabChar(codeOf("A")), false);
    assert.equal(isKebabChar(codeOf("_")), false);
});

test("isDot matches the full stop only", () => {
    assert.equal(isDot(codeOf(".")), true);
    assert.equal(isDot(codeOf(",")), false);
});

test("isIdentChar accepts identifier characters", () => {
    assert.equal(isIdentChar(codeOf("9")), true);
    assert.equal(isIdentChar(codeOf("_")), true);
    assert.equal(isIdentChar(codeOf("$")), true);
    assert.equal(isIdentChar(codeOf("-")), false);
});

test("isSnakeTail accepts digits and underscore", () => {
    assert.equal(isSnakeTail(codeOf("0")), true);
    assert.equal(isSnakeTail(codeOf("_")), true);
    assert.equal(isSnakeTail(codeOf("a")), false);
});

test("isCssNameChar accepts css name characters", () => {
    assert.equal(isCssNameChar(codeOf("a")), true);
    assert.equal(isCssNameChar(codeOf("-")), true);
    assert.equal(isCssNameChar(codeOf("_")), true);
    assert.equal(isCssNameChar(codeOf("$")), false);
});
```
