# test.build/core/converters/metric.converter.test.ts

> 36 lines of code and 0 definitions.

Tree: Codebase Testing
Language: typescript
Canonical: https://banes-lab.com/anatomy/testing#file-testing-test-build-core-converters-metric-converter-test-ts
Source text: https://banes-lab.com/source/testing/test.build/core/converters/metric.converter.test.ts.txt

Listed in [test.build/core/converters](https://banes-lab.com/api/source/testing/test.build/core/converters.md), after [test.build/core/converters/markup.converter.test.ts](https://banes-lab.com/source/testing/test.build/core/converters/markup.converter.test.ts.md) and before [test.build/core/converters/ontology.converter.test.ts](https://banes-lab.com/source/testing/test.build/core/converters/ontology.converter.test.ts.md).

## Contained in

- [test.build/core/converters](https://banes-lab.com/anatomy/testing/folder-testing-test-build-core-converters.md)

## Source

```typescript
import { describe, expect, it } from "vitest";
import { anatomyMeasures } from "@banes-lab/build-scripts/core/converters/metric.converter.ts";
import { convert } from "./anatomy.fixture.ts";
import { renderAnatomyMeasures } from "@banes-lab/build-scripts/core/formatters/anatomy.formatter.ts";
import { resolutionRate } from "@govlab/patterns";
import { tallyOf } from "@banes-lab/build-scripts/core/converters/structure.converter.ts";

const FIRST = "first";
const SECOND = "second";

describe("anatomyMeasures", () => {
    it("adds every tree's measures, keeps the highest degrees, and lists each tree with its label", () => {
        const snapshot = convert();
        const measures = anatomyMeasures(
            [
                { exportName: "A", snapshot, tab: FIRST },
                { exportName: "B", snapshot, tab: SECOND },
            ],
            (tab) => tab.toUpperCase(),
        );
        expect(measures.stats.files).toBe(snapshot.tree.stats.files * 2);
        expect(measures.metrics.definitions).toBe(snapshot.metrics.definitions * 2);
        expect(measures.metrics.maxInDegree).toBe(snapshot.metrics.maxInDegree);
        expect(measures.metrics.resolutionRate).toBe(
            resolutionRate(snapshot.metrics.edges * 2, snapshot.metrics.unresolvedCalls * 2),
        );
        expect(measures.trees.map((tree) => [tree.tab, tree.label])).toStrictEqual([
            [FIRST, "FIRST"],
            [SECOND, "SECOND"],
        ]);
        expect(renderAnatomyMeasures(measures)).toContain("export const ANATOMY_MEASURES: AnatomyMeasures");
    });
});

describe("tallyOf", () => {
    it("adds counts by key across every part", () => {
        expect(tallyOf([{ a: 1, b: 2 }, { a: 3 }, {}])).toStrictEqual({ a: 4, b: 2 });
    });
});
```
