mirror of
https://github.com/wneessen/apg-go.git
synced 2024-11-09 15:52:54 +01:00
Winni Neessen
79f921f9ad
This commit introduces the .gitignore configuration file and adds SPDX headers to several files including test and documentation files. The headers provide license information in a standardized format which can be easily picked up by automated tools for license compliance checks. Additionally, it deleted a .idea/.gitignore file, which is a project specific IDE configuration file not necessary for the repository. It also introduced a README.md file providing more insightful information about the project.
165 lines
3.1 KiB
Go
165 lines
3.1 KiB
Go
// SPDX-FileCopyrightText: 2021-2024 Winni Neessen <wn@neessen.dev>
|
|
//
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
package apg
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
func TestConvertByteToWord(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
char byte
|
|
want string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "UpperCaseChar",
|
|
char: 'A',
|
|
want: alphabetNames['A'],
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "LowerCaseChar",
|
|
char: 'a',
|
|
want: strings.ToLower(alphabetNames['A']),
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "NonAlphaChar",
|
|
char: '(',
|
|
want: symbNumNames['('],
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "UnsupportedChar",
|
|
char: 'ü',
|
|
want: "",
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := ConvertByteToWord(tt.char)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("ConvertByteToWord() error = %s, wantErr %t", err, tt.wantErr)
|
|
return
|
|
}
|
|
if got != tt.want {
|
|
t.Errorf("ConvertByteToWord() got = %s, want %s", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestSpell(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
want string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "empty string",
|
|
input: "",
|
|
want: "",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "single character",
|
|
input: "a",
|
|
want: "alfa",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "multiple characters",
|
|
input: "abc",
|
|
want: "alfa/bravo/charlie",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "non-alphabetic character",
|
|
input: "1",
|
|
want: "ONE",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "mixed alphabetic and non-alphabetic characters",
|
|
input: "a1",
|
|
want: "alfa/ONE",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "not supported characters",
|
|
input: "üäö߀",
|
|
want: "",
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := Spell(tt.input)
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("Spell() error = %s, wantErr %t", err, tt.wantErr)
|
|
return
|
|
}
|
|
if got != tt.want {
|
|
t.Errorf("Spell() = %s, want %s", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestPronounce(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
syllables []string
|
|
want string
|
|
wantErr bool
|
|
}{
|
|
{
|
|
name: "Pronounce_NoSyllables",
|
|
syllables: []string{},
|
|
want: "",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "Pronounce_SingleSyllable",
|
|
syllables: []string{"me"},
|
|
want: "me",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "Pronounce_MultipleSyllables",
|
|
syllables: []string{"mu", "sa"},
|
|
want: "mu-sa",
|
|
wantErr: false,
|
|
},
|
|
{
|
|
name: "Pronounce_NonKoremutakeSyllable",
|
|
syllables: []string{"ä"},
|
|
wantErr: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
config := NewConfig()
|
|
g := New(config)
|
|
g.syllables = tt.syllables
|
|
got, err := g.Pronounce()
|
|
if (err != nil) != tt.wantErr {
|
|
t.Errorf("Generator.Pronounce() error = %v, wantErr %v", err, tt.wantErr)
|
|
return
|
|
}
|
|
if got != tt.want {
|
|
t.Errorf("Generator.Pronounce() = %v, want %v", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|