# test.govlab/quality/core/parsers/location.parser.test.ts

> 10 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-govlab-quality-core-parsers-location-parser-test-ts
Source text: https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/location.parser.test.ts.txt

Listed in [test.govlab/quality/core/parsers](https://banes-lab.com/api/source/testing/test.govlab/quality/core/parsers.md), after [test.govlab/quality/core/parsers/knob.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/knob.parser.test.ts.md) and before [test.govlab/quality/core/parsers/record.parser.test.ts](https://banes-lab.com/source/testing/test.govlab/quality/core/parsers/record.parser.test.ts.md).

## Contained in

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

## Source

```typescript
import { expect, test } from "vitest";
import { parseLines, parseLocation } from "@govlab/quality/core/parsers/location.parser.ts";

test("parseLocation reads file:line:column, keeping colons inside the file", () => {
    expect(parseLocation("D:/src/a.cpp:3:7")).toStrictEqual({ column: 7, file: "D:/src/a.cpp", line: 3 });
    expect(parseLocation("a.cpp:x:7")).toBeNull();
    expect(parseLocation("a.cpp")).toBeNull();
});

test("parseLines trims each line and drops the ones the line parser rejects", () => {
    expect(parseLines(" a \n\n b ", (line) => (line.length > 0 ? line : null))).toStrictEqual(["a", "b"]);
});
```
