%Schriftgröße, Layout, Papierformat, Art des Dokumentes
\documentclass[10pt,oneside,a4paper,headsepline,footsepline]{scrartcl}

%Einstellungen der Seitenränder
\usepackage[left=2cm,right=2cm,top=1.5cm,bottom=1.5cm,includeheadfoot]{geometry}

%neue Rechtschreibung
\usepackage[ngerman]{babel}

%Umlaute ermöglichen
\usepackage[utf8]{inputenc}

%Gesamtseitenzahl
\usepackage{lastpage}

% Kopf- und Fußzeile
% Funktioniert nicht \usepackage[automark]{scrpage2}%
\usepackage[automark]{scrlayer-scrpage}

%Quellcode-Listings
\usepackage{listings}

%Hyperlinks
\usepackage{hyperref}

%Schriftarten
\usepackage[T1]{fontenc}

% Backticks
\usepackage{upquote}

%Kopfzeile
\ihead{Softwaretechnik}
\chead{}
\ohead{http://kohnlehome.de/informatik/vitest.pdf}
%\setheadsepline{0.5pt} DEPRECATED

%Fußzeile
%\setfootsepline{0.5pt} DEPRECATED
\ifoot{Franz Kohnle}
\cfoot{Seite \thepage\ von  \pageref{LastPage}}
\ofoot{\today}

\pagestyle{scrheadings}

\begin{document}

% Überschrift 
\begin{center}
\LARGE % Schriftgröße
\bfseries % Fettdruck
\sffamily % Serifenlose Schrift
Vitest
\end{center}

%\section*{Hilfe}
%\begin{tabular}{l l}
%\texttt{git help} & Hilfe\\
%\texttt{git help BEFEHL} & Hilfe zum BEFEHL
%\end{tabular}

\section*{Quelle}
\href{https://vitest.dev/}{vitest.dev}

\section*{Installation}
\begin{verbatim}
npm install -D vitest
npm install -D @vitest/coverage-v8
\end{verbatim}

\section*{package.json}
\begin{verbatim}
"scripts": {
    "test": "vitest",
    "coverage": "vitest run --coverage"
}
\end{verbatim}

\section*{Starten}
\begin{verbatim}
npm test
npm run coverage
\end{verbatim}

\section*{sum.js}
\begin{verbatim}
export const sum = (a, b) => {
    return a + b
}
\end{verbatim}

\section*{sum.test.js}
\begin{verbatim}
import { describe, expect, test } from 'vitest'
import { sum } from './sum'

// Test suite
describe('sum test', () => {
    // Test case 1
    test('1 + 2 = 3', () => {
        expect(sum(1, 2)).toBe(3)
    });

    // Test case 2
    test('0.1 + 0.2 = 0.3', () => {
        expect(sum(0.1, 0.2)).toBeCloseTo(0.3)
    });
});
\end{verbatim}

\section*{Matcher}
\begin{verbatim}
.toBe()           // === für ganze Zahlen
.toBeCloseTo()    // für Kommazahlen
.toEqual()        // == für Arrays und Objekte 
.toStrictEqual()  // == für Arrays und Objekte
\end{verbatim}

\end{document}
