git » firstones » main » tree

[main] / glyphs_test.go

package main

import "testing"

func mkS(names ...string) Syllable {
	s := make(Syllable, len(names))
	for i, name := range names {
		s[i] = allGlyphs[name]
	}
	return s
}

func TestPhonemesToGlyphs(t *testing.T) {
	type Case struct {
		ps  string
		w   Word
		err bool
	}
	cases := []Case{
		{
			ps: "SH-fEEt-R-All",
			w:  Word{mkS("SH", "fEEt", "R", "All")},
		},
		{
			ps:  "SH-fE/Et-All",
			err: true,
		},
		{
			ps: "lIt-N/T-R-sAd-P/T-All",
			w: Word{
				mkS("lIt", "N"),
				mkS("T", "R", "sAd", "P"),
				mkS("T", "All")},
		},
	}

	// Variants for the same output.
	for _, s := range []string{
		"SH-fEEt-/-R-All", "/-SH-fEEt-/-R-All-/",
		"-SH-fEEt-/-R-All-", "SH-fEEt-/-/-R-All",
		"SH-fEEt/R-All", "SH-fEEt//R-All",
		"/SH-fEEt//R-All/",
	} {
		cases = append(cases, Case{
			ps: s,
			w:  Word{mkS("SH", "fEEt"), mkS("R", "All")},
		})
	}

	for i, c := range cases {
		got, err := phonemesToGlyphs(c.ps)
		t.Logf("%d: phonemesToGlyphs(%q) = %v / %v, want %v / %v",
			i, c.ps, got, err, c.w, c.err)
		if (err == nil) != !c.err {
			t.Errorf("   error mismatch: got %v, want %v", err, c.err)
		}
		if len(got) != len(c.w) {
			t.Errorf("   length mismatch: got %d, want %d", len(got), len(c.w))
		}
	}
}

func TestMustGetGlyphErr(t *testing.T) {
	defer func() {
		if r := recover(); r == nil {
			t.Errorf("mustGetGlyph did not panic on unknown glyph")
		}
	}()

	mustGetGlyph("unknown-glyph")
}