use crate::mode::quenya::*;
use super::*;
#[test]
fn alt_a() {
let rauca = test_tengwar!(Quenya, "rauca" == "rauka" => [
TENGWA_ROMEN, CARRIER_DIPH_U, TEHTA_A.base, TENGWA_CALMA, TEHTA_A.base, ]);
test_tengwar!(Quenya[alt_a=true], "rauca" == "rauka" != rauca => [
TENGWA_ROMEN, CARRIER_DIPH_U, TEHTA_YANTA.base, TENGWA_CALMA, TEHTA_YANTA.base, ]);
}
#[test]
fn alt_rince() {
let otso = test_tengwar!(Quenya, "otso" == "otzo" => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_TINCO, SA_RINCE, TEHTA_O.base, ]);
test_tengwar!(Quenya[alt_rince=true], "otso" == "otzo" != otso => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_TINCO, TEHTA_O.base, SA_RINCE_FINAL, ]);
let otsor = test_tengwar!(Quenya, "otsor" == "otzor" => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_TINCO, SA_RINCE, TEHTA_O.base, TENGWA_ORE, ]);
test_tengwar!(Quenya[alt_rince=true], "otsor" == "otzor" == otsor);
let mixa = test_tengwar!(Quenya, "mixa"
=> [
TENGWA_MALTA, TEHTA_I.base, TENGWA_CALMA, SA_RINCE, TEHTA_A.base, ]
== "micsa"
== "miksa"
== "mikza"
);
test_tengwar!(Quenya[alt_rince=true], mixa
== "mixa"
== "micsa"
== "miksa"
== "mikza"
);
let mixar = test_tengwar!(Quenya, "mixar"
=> [
TENGWA_MALTA, TEHTA_I.base, TENGWA_CALMA, SA_RINCE, TEHTA_A.base, TENGWA_ORE, ]
== "micsar"
== "miksar"
== "mikzar"
);
test_tengwar!(Quenya[alt_rince=true], mixar
== "mixar"
== "micsar"
== "miksar"
== "mikzar"
);
let tas = test_tengwar!(Quenya, "tas" => [
TENGWA_TINCO, TEHTA_A.base, TENGWA_SILME, ]);
test_tengwar!(Quenya[alt_rince=true], "tas" == tas);
test_tengwar!(Quenya, "tsa" => [
TENGWA_TINCO, SA_RINCE, TEHTA_A.base, ]);
test_tengwar!(Quenya[alt_rince=true], "tsa" => [
TENGWA_TINCO, TEHTA_A.base, SA_RINCE_FINAL, ]);
}
#[test]
fn elision() {
test_tengwar!(Quenya, "alda" => [
CARRIER_SHORT, TEHTA_A.base, TENGWA_ALDA, TEHTA_A.base, ]);
test_tengwar!(Quenya, "ʒalda" => [
TENGWA_ANNA, TEHTA_A.base, TENGWA_ALDA, TEHTA_A.base, ]);
test_tengwar!(Quenya[elide_a=true], "alda" => [CARRIER_SHORT, TENGWA_ALDA]);
test_tengwar!(Quenya[elide_a=true], "ʒalda" => [TENGWA_ANNA, TENGWA_ALDA]);
test_tengwar!(Quenya, "calma" => [
TENGWA_CALMA, TEHTA_A.base, TENGWA_LAMBE, TENGWA_MALTA, TEHTA_A.base, ]);
test_tengwar!(Quenya[dot_plain=true], "calma" => [
TENGWA_CALMA, TEHTA_A.base, TENGWA_LAMBE, DC_UNDER_DOT_1, TENGWA_MALTA, TEHTA_A.base, ]);
test_tengwar!(Quenya[elide_a=true], "calma" => [
TENGWA_CALMA, TENGWA_LAMBE, TENGWA_MALTA,
]);
test_tengwar!(Quenya[dot_plain=true, elide_a=true], "calma" => [
TENGWA_CALMA, TENGWA_LAMBE, DC_UNDER_DOT_1, TENGWA_MALTA,
]);
test_tengwar!(Quenya, "hárar" => [
TENGWA_HYARMEN, CARRIER_LONG, TEHTA_A.base, TENGWA_ROMEN, TEHTA_A.base, TENGWA_ORE, ]);
test_tengwar!(Quenya[elide_a=true], "hárar" => [
TENGWA_HYARMEN, CARRIER_LONG, TENGWA_ROMEN, TENGWA_ORE, ]);
test_tengwar!(Quenya[dot_plain=true, elide_a=true], "hárar" => [
TENGWA_HYARMEN, DC_UNDER_DOT_1, CARRIER_LONG, TENGWA_ROMEN, TENGWA_ORE, DC_UNDER_DOT_1, ]);
test_tengwar!(Quenya, "airë" => [
TENGWA_YANTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_E.base, ]);
test_tengwar!(Quenya[elide_a=true], "airë" => [
TENGWA_YANTA, TENGWA_ROMEN, TEHTA_E.base, ]);
test_tengwar!(Quenya, "aulë" => [
TENGWA_URE, TEHTA_A.base, TENGWA_LAMBE, TEHTA_E.base, ]);
test_tengwar!(Quenya[elide_a=true], "aulë" => [
TENGWA_URE, TENGWA_LAMBE, TEHTA_E.base, ]);
{
test_tengwar!(Quenya, "namárië" => [
TENGWA_NUMEN, TEHTA_A.base, TENGWA_MALTA, CARRIER_LONG, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_E.base, ]);
test_tengwar!(Quenya[elide_a=true], "namárië" => [
TENGWA_NUMEN, TENGWA_MALTA, CARRIER_LONG, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_E.base, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_init=true], "namárië" => [
TENGWA_NUMEN, TEHTA_A.base, TENGWA_MALTA, CARRIER_LONG, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_E.base, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_long=true], "namárië" => [
TENGWA_NUMEN, TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_E.base, ]);
test_tengwar!(Quenya[
elide_a=true,
keep_a_init=true,
keep_a_long=true,
], "namárië" => [
TENGWA_NUMEN, TEHTA_A.base, TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_E.base, ]);
}
{
test_tengwar!(Quenya, "mára" => [
TENGWA_MALTA, CARRIER_LONG, TEHTA_A.base, TENGWA_ROMEN, TEHTA_A.base, ]);
test_tengwar!(Quenya[elide_a=true], "mára" => [
TENGWA_MALTA, CARRIER_LONG, TENGWA_ROMEN, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_init=true], "mára" => [
TENGWA_MALTA, CARRIER_LONG, TEHTA_A.base, TENGWA_ROMEN, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_long=true], "mára" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, ]);
test_tengwar!(Quenya[
elide_a=true,
keep_a_init=true,
keep_a_long=true,
], "mára" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, ]);
}
{
test_tengwar!(Quenya, "mará" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, CARRIER_LONG, TEHTA_A.base, ]);
test_tengwar!(Quenya[elide_a=true], "mará" => [
TENGWA_MALTA, TENGWA_ROMEN, CARRIER_LONG, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_init=true], "mará" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, CARRIER_LONG, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_long=true], "mará" => [
TENGWA_MALTA, TENGWA_ROMEN, TEHTA_A.base, ]);
test_tengwar!(Quenya[
elide_a=true,
keep_a_init=true,
keep_a_long=true,
], "mará" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_A.base, ]);
}
{
test_tengwar!(Quenya, "maria" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_A.base, ]);
test_tengwar!(Quenya[elide_a=true], "maria" => [
TENGWA_MALTA, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_init=true], "maria" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_long=true], "maria" => [
TENGWA_MALTA, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, ]);
test_tengwar!(Quenya[
elide_a=true,
keep_a_init=true,
keep_a_long=true,
], "maria" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, ]);
}
{
test_tengwar!(Quenya, "mariá" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_LONG, TEHTA_A.base, ]);
test_tengwar!(Quenya[elide_a=true], "mariá" => [
TENGWA_MALTA, TENGWA_ROMEN, TEHTA_I.base, CARRIER_LONG, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_init=true], "mariá" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_LONG, ]);
test_tengwar!(Quenya[elide_a=true, keep_a_long=true], "mariá" => [
TENGWA_MALTA, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_A.base, ]);
test_tengwar!(Quenya[
elide_a=true,
keep_a_init=true,
keep_a_long=true,
], "mariá" => [
TENGWA_MALTA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_I.base, CARRIER_SHORT, TEHTA_A.base, ]);
}
}
#[test]
fn ligatures() {
test_tengwar!(Quenya[ligate_short=false, ligate_zwj=0], "ista" => [
CARRIER_SHORT, TEHTA_I.base, TENGWA_SILME, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=true, ligate_zwj=0], "ista" => [
CARRIER_SHORT_LIG, TEHTA_I.base, TENGWA_SILME, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=false, ligate_zwj=1], "ista" => [
CARRIER_SHORT, TEHTA_I.base, TENGWA_SILME, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=true, ligate_zwj=1], "ista" => [
CARRIER_SHORT_LIG, TEHTA_I.base, TENGWA_SILME, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=false, ligate_zwj=2], "ista" => [
CARRIER_SHORT, TEHTA_I.base, TENGWA_SILME, ZWJ, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=true, ligate_zwj=2], "ista" => [
CARRIER_SHORT_LIG, TEHTA_I.base, TENGWA_SILME, ZWJ, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=false, ligate_zwj=3], "ista" => [
CARRIER_SHORT, TEHTA_I.base, TENGWA_SILME, ZWJ, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_short=true, ligate_zwj=3], "ista" => [
CARRIER_SHORT_LIG, TEHTA_I.base, TENGWA_SILME, ZWJ, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_zwj=0], "ohta" => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_AHA, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_zwj=1], "ohta" => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_AHA, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_zwj=2], "ohta" => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_AHA, TENGWA_TINCO, TEHTA_A.base, ]);
test_tengwar!(Quenya[ligate_zwj=3], "ohta" => [
CARRIER_SHORT, TEHTA_O.base, TENGWA_AHA, ZWJ, TENGWA_TINCO, TEHTA_A.base, ]);
{
{
test_tengwar!(Quenya[ligate_short=true], "etë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_TINCO, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "epë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_PARMA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "ecë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_CALMA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "eqë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_QESSE, TEHTA_E.base,
]);
}
{
test_tengwar!(Quenya[ligate_short=true], "endë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_ANDO, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "embë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_UMBAR, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "engë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_ANGA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "engwë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_UNGWE, TEHTA_E.base,
]);
}
{
test_tengwar!(Quenya[ligate_short=true], "eþë" => [
CARRIER_SHORT, TEHTA_E.base,
TENGWA_THULE, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "efë" => [
CARRIER_SHORT, TEHTA_E.base,
TENGWA_FORMEN, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "ehë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_AHA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "ehwë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_HWESTA, TEHTA_E.base,
]);
}
{
test_tengwar!(Quenya[ligate_short=true], "entë" => [
CARRIER_SHORT, TEHTA_E.base,
TENGWA_ANTO, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "empë" => [
CARRIER_SHORT, TEHTA_E.base,
TENGWA_AMPA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "encë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_ANCA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "enqë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_UNQUE, TEHTA_E.base,
]);
}
{
test_tengwar!(Quenya[ligate_short=true], "enë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_NUMEN, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "emë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_MALTA, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "eñë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_NOLDO, TEHTA_E.base,
]);
test_tengwar!(Quenya[ligate_short=true], "eñwë" => [
CARRIER_SHORT_LIG, TEHTA_E.base,
TENGWA_NWALME, TEHTA_E.base,
]);
}
}
}
#[test]
fn normalization() {
test_tengwar!(Quenya, "ñávëa"
=> [
TENGWA_NOLDO, CARRIER_LONG, TEHTA_A.base, TENGWA_VALA, TEHTA_E.base, CARRIER_SHORT, TEHTA_A.base, ]
== "ñávëa"
== "ÑÁVËA"
);
test_tengwar!(Quenya, "ñólë"
=> [
TENGWA_NOLDO, TEHTA_O.base, TEHTA_O.base, TENGWA_LAMBE, TEHTA_E.base, ]
== "ñólë" == "ñólë" == "ÑÓLË"
);
}
#[test]
fn numerals() {
use numeral::*;
test_tengwar!(Quenya, "0" => [NUM_0, BASE_12_DOT]);
test_tengwar!(Quenya, "1" => [NUM_1, BASE_12_DOT]);
test_tengwar!(Quenya, "9" => [NUM_9, BASE_12_DOT]);
test_tengwar!(Quenya, "10" => [NUM_A, BASE_12_DOT]);
test_tengwar!(Quenya, "11" => [NUM_B, BASE_12_DOT]);
test_tengwar!(Quenya, "12" => [
NUM_0, MOD_UNITS,
NUM_1, BASE_12_DOT,
]);
test_tengwar!(Quenya, "24" => [
NUM_0, MOD_UNITS,
NUM_2, BASE_12_DOT,
]);
test_tengwar!(Quenya, "25" => [
NUM_1, MOD_UNITS,
NUM_2, BASE_12_DOT,
]);
test_tengwar!(Quenya, "144" => [
NUM_0, MOD_UNITS,
NUM_0, BASE_12_DOT,
NUM_1, BASE_12_DOT,
]);
test_tengwar!(Quenya, "171" => [
NUM_3, MOD_UNITS,
NUM_2, BASE_12_DOT,
NUM_1, BASE_12_DOT,
]);
test_tengwar!(Quenya, "#1" => [NUM_1, BASE_10_DOT]);
test_tengwar!(Quenya, "#9" => [NUM_9, BASE_10_DOT]);
test_tengwar!(Quenya, "#10" => [
NUM_0, MOD_UNITS, BASE_10_DOT,
NUM_1, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#20" => [
NUM_0, MOD_UNITS, BASE_10_DOT,
NUM_2, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#21" => [
NUM_1, MOD_UNITS, BASE_10_DOT,
NUM_2, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#100" => [
NUM_0, MOD_UNITS, BASE_10_DOT,
NUM_0, BASE_10_DOT,
NUM_1, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#123" => [
NUM_3, MOD_UNITS, BASE_10_DOT,
NUM_2, BASE_10_DOT,
NUM_1, BASE_10_DOT,
]);
test_tengwar!(Quenya, "000" => [NUM_0, BASE_12_DOT]);
test_tengwar!(Quenya, "001" => [NUM_1, BASE_12_DOT]);
test_tengwar!(Quenya, "#-0" => [
NUM_0, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#-1" => [
Numeral::PREF_NEG_OUT,
NUM_1, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#-10" => [
Numeral::PREF_NEG_OUT,
NUM_0, MOD_UNITS, BASE_10_DOT,
NUM_1, BASE_10_DOT,
]);
test_tengwar!(Quenya, "#1@" => [
NUM_1, BASE_10_DOT,
Numeral::SUFF_ORD_OUT,
]);
test_tengwar!(Quenya, "#-1@" => [
Numeral::PREF_NEG_OUT,
NUM_1, BASE_10_DOT,
Numeral::SUFF_ORD_OUT,
]);
test_tengwar!(Quenya, "/#" => ['/', SUFF_SEQ_IN]);
test_tengwar!(Quenya, "0#" => [NUM_0, BASE_12_DOT, SUFF_SEQ_IN]);
test_tengwar!(Quenya, "1#" => [SEQUENCE[0]]);
test_tengwar!(Quenya, "9#" => [SEQUENCE[8]]);
test_tengwar!(Quenya, ":#" => [PUNCT_DOT_2, SUFF_SEQ_IN]);
test_tengwar!(Quenya, "00#" => [NUM_0, BASE_12_DOT, SUFF_SEQ_IN]);
test_tengwar!(Quenya, "01#" => [SEQUENCE[0]]);
test_tengwar!(Quenya, "09#" => [SEQUENCE[8]]);
test_tengwar!(Quenya, "10#" => [SEQUENCE[9]]);
test_tengwar!(Quenya, "11#" => [SEQUENCE[10]]);
test_tengwar!(Quenya, "24#" => [SEQUENCE[23]]);
test_tengwar!(Quenya, "25#" => [
NUM_1, MOD_UNITS,
NUM_2, BASE_12_DOT,
SUFF_SEQ_IN,
]);
test_tengwar!(Quenya, "30#" => [
NUM_6, MOD_UNITS,
NUM_2, BASE_12_DOT,
SUFF_SEQ_IN,
]);
}
#[test]
fn nuquernar() {
let silme = test_tengwar!(Quenya, "silmë" => [
TENGWA_SILME, TEHTA_I.base, TENGWA_LAMBE, TENGWA_MALTA, TEHTA_E.base, ]);
test_tengwar!(Quenya[nuquerna=true], "silmë" != silme => [
TENGWA_SILME_NUQ, TEHTA_I.base, TENGWA_LAMBE, TENGWA_MALTA, TEHTA_E.base, ]);
let esse = test_tengwar!(Quenya, "essë"
=> [CARRIER_SHORT, TEHTA_E.base, TENGWA_ESSE, TEHTA_E.base]
== "eze"
== "eße"
!= "ese"
);
test_tengwar!(Quenya[nuquerna=true], "essë" != esse
=> [CARRIER_SHORT, TEHTA_E.base, TENGWA_ESSE_NUQ, TEHTA_E.base]
== "eze"
== "eße"
!= "ese"
);
let siila = test_tengwar!(Quenya, "síla" => [
TENGWA_SILME, CARRIER_LONG, TEHTA_I.base, TENGWA_LAMBE, TEHTA_A.base, ]);
test_tengwar!(Quenya[nuquerna=true], "síla" == siila);
}
#[test]
fn words() {
test_tengwar!(Quenya, "eleni sílar"
=> [
CARRIER_SHORT, TEHTA_E.base, TENGWA_LAMBE, TEHTA_E.base, TENGWA_NUMEN, TEHTA_I.base, ' ',
TENGWA_SILME, CARRIER_LONG, TEHTA_I.base, TENGWA_LAMBE, TEHTA_A.base, TENGWA_ORE, ]
== "Eleni Sílar"
== "Elënï Sílär"
== "ELËNÏ SÍLÄR"
== "ELeNi SiiLaR"
== "ELENI SIILAR"
);
test_tengwar!(Quenya, "Elen síla lúmenn' omentielvo :" => [
CARRIER_SHORT, TEHTA_E.base, TENGWA_LAMBE, TEHTA_E.base, TENGWA_NUMEN, ' ',
TENGWA_SILME, CARRIER_LONG, TEHTA_I.base, TENGWA_LAMBE, TEHTA_A.base, ' ',
TENGWA_LAMBE, TEHTA_U.base, TEHTA_U.base, TENGWA_MALTA, TEHTA_E.base, TENGWA_NUMEN, DC_UNDER_LINE_H, PUNCT_DOT_1, ' ',
CARRIER_SHORT, TEHTA_O.base, TENGWA_MALTA, TEHTA_E.base, TENGWA_ANTO, TEHTA_I.base, CARRIER_SHORT, TEHTA_E.base, TENGWA_LAMBE, TENGWA_VALA, TEHTA_O.base, ' ', PUNCT_DOT_2,
]);
test_tengwar!(Quenya, "helcaraxë"
=> [
TENGWA_HYARMEN, TEHTA_E.base, TENGWA_LAMBE, TENGWA_CALMA, TEHTA_A.base, TENGWA_ROMEN, TEHTA_A.base, TENGWA_CALMA, SA_RINCE, TEHTA_E.base, ]
== "helkaracse"
== "helkarakse"
);
let _quenya = test_tengwar!(Quenya, "quenya"
=> [TENGWA_QESSE, TEHTA_E.base, TENGWA_NUMEN, MOD_PALATAL, TEHTA_A.base]
== "qenya"
== "kwenya"
== "cwenya"
!= "çwenya"
!= "kuenya"
!= "cuenya"
!= "çuenya"
);
let _aha = test_tengwar!(Quenya, "aha"
=> [CARRIER_SHORT, TEHTA_A.base, TENGWA_AHA, TEHTA_A.base]
== "acha"
== "akha"
!= "agha"
);
let _nahta = test_tengwar!(Quenya, "nahta"
=> [TENGWA_NUMEN, TEHTA_A.base, TENGWA_AHA, TENGWA_TINCO, TEHTA_A.base]
== "nachta"
== "nakhta"
!= "naghta"
);
let hyarmen = test_tengwar!(Quenya, "hyarmen"
=> [
TENGWA_HYARMEN, MOD_PALATAL, TEHTA_A.base, TENGWA_ORE, TENGWA_MALTA, TEHTA_E.base, TENGWA_NUMEN, ]
!= "chyarmen"
);
let _khyarmen = test_tengwar!(Quenya, "khyarmen"
=> [
TENGWA_AHA, MOD_PALATAL, TEHTA_A.base, TENGWA_ORE, TENGWA_MALTA, TEHTA_E.base, TENGWA_NUMEN, ]
== "chyarmen"
!= hyarmen
);
let he = test_tengwar!(Quenya, "hë" => [TENGWA_HYARMEN, TEHTA_E.base]);
let khe = test_tengwar!(Quenya, "khë" => [TENGWA_AHA, TEHTA_E.base]);
test_tengwar!(Quenya, "chë" == khe);
test_tengwar!(Quenya, "chë" != he);
test_tengwar!(Quenya, "ghë" != he);
test_tengwar!(he != khe);
let _hwesta = test_tengwar!(Quenya, "hwesta"
=> [TENGWA_HWESTA, TEHTA_E.base, TENGWA_SILME, TENGWA_TINCO, TEHTA_A.base]
!= "chwesta"
!= "khwesta"
!= "ghwesta"
);
let _aara = test_tengwar!(Quenya, "ára"
=> [CARRIER_LONG, TEHTA_A.base, TENGWA_ROMEN, TEHTA_A.base]
== "aara" );
let _thuule = test_tengwar!(Quenya, "þúlë"
=> [TENGWA_THULE, TEHTA_U.base, TEHTA_U.base, TENGWA_LAMBE, TEHTA_E.base]
== "thuule" == "θúlë"
== "ΘÚLË"
== "ÞÚLË"
!= "súlë"
);
let _calma = test_tengwar!(Quenya, "calma"
=> [TENGWA_CALMA, TEHTA_A.base, TENGWA_LAMBE, TENGWA_MALTA, TEHTA_A.base]
== "kalma"
!= "qalma"
!= "çalma"
);
let _nuumen = test_tengwar!(Quenya, "númen"
=> [
TENGWA_NUMEN, TEHTA_U.base, TEHTA_U.base, TENGWA_MALTA, TEHTA_E.base, TENGWA_NUMEN, ]
== "nuumen" != "ñuumen"
!= "ngúmen"
);
let _ngoldo = test_tengwar!(Quenya, "ñoldo"
=> [TENGWA_NOLDO, TEHTA_O.base, TENGWA_ALDA, TEHTA_O.base]
== "ngoldo" == "ÑOLDO"
!= "noldo"
);
let _etya_ngoldo = test_tengwar!(Quenya, "etyañoldo"
=> [
CARRIER_SHORT, TEHTA_E.base, TENGWA_TINCO, MOD_PALATAL, TEHTA_A.base, TENGWA_NOLDO, TEHTA_O.base, TENGWA_ALDA, TEHTA_O.base, ]
== r"etya\ ngoldo" == r"etya\ ñoldo"
!= r"etyangoldo"
);
let _ngwalme = test_tengwar!(Quenya, "ñwalmë"
=> [TENGWA_NWALME, TEHTA_A.base, TENGWA_LAMBE, TENGWA_MALTA, TEHTA_E.base]
== "ngwalme" == "nwalmë"
);
let _anga = test_tengwar!(Quenya, "anga"
=> [CARRIER_SHORT, TEHTA_A.base, TENGWA_ANGA, TEHTA_A.base]
!= "aña"
!= "ana"
);
let _ungwe = test_tengwar!(Quenya, "ungwë"
=> [CARRIER_SHORT, TEHTA_U.base, TENGWA_UNGWE, TEHTA_E.base]
== "ungwe" != "uñwë"
!= "unwë"
);
test_tengwar!(Quenya, "hrívë" => [
TENGWA_HALLA, TENGWA_ROMEN, CARRIER_LONG, TEHTA_I.base, TENGWA_VALA, TEHTA_E.base, ]);
test_tengwar!(Quenya, "hlócë" => [
TENGWA_HALLA, TENGWA_LAMBE, TEHTA_O.base, TEHTA_O.base, TENGWA_CALMA, TEHTA_E.base, ]);
}
#[test]
fn vowels() {
test_tengwar!(Quenya, "ai" => [CARRIER_DIPH_I, TEHTA_A.base]);
test_tengwar!(Quenya, "oi" => [CARRIER_DIPH_I, TEHTA_O.base]);
test_tengwar!(Quenya, "ui" => [CARRIER_DIPH_I, TEHTA_U.base]);
test_tengwar!(Quenya, "au" => [CARRIER_DIPH_U, TEHTA_A.base]);
test_tengwar!(Quenya, "eu" => [CARRIER_DIPH_U, TEHTA_E.base]);
test_tengwar!(Quenya, "iu" => [CARRIER_DIPH_U, TEHTA_I.base]);
test_tengwar!(Quenya, "a" => [CARRIER_SHORT, TEHTA_A.base]);
test_tengwar!(Quenya, "e" => [CARRIER_SHORT, TEHTA_E.base]);
test_tengwar!(Quenya, "i" => [CARRIER_SHORT, TEHTA_I.base]);
test_tengwar!(Quenya, "o" => [CARRIER_SHORT, TEHTA_O.base]);
test_tengwar!(Quenya, "u" => [CARRIER_SHORT, TEHTA_U.base]);
test_tengwar!(Quenya, "á" => [CARRIER_LONG, TEHTA_A.base] == "aa");
test_tengwar!(Quenya, "é" => [CARRIER_LONG, TEHTA_E.base] == "ee");
test_tengwar!(Quenya, "í" => [CARRIER_LONG, TEHTA_I.base] == "ii");
test_tengwar!(Quenya, "ó" => [CARRIER_LONG, TEHTA_O.base] == "oo");
test_tengwar!(Quenya, "ú" => [CARRIER_LONG, TEHTA_U.base] == "uu");
test_tengwar!(Quenya, "la" => [TENGWA_LAMBE, TEHTA_A.base]);
test_tengwar!(Quenya, "le" => [TENGWA_LAMBE, TEHTA_E.base]);
test_tengwar!(Quenya, "li" => [TENGWA_LAMBE, TEHTA_I.base]);
test_tengwar!(Quenya, "lo" => [TENGWA_LAMBE, TEHTA_O.base]);
test_tengwar!(Quenya, "lu" => [TENGWA_LAMBE, TEHTA_U.base]);
test_tengwar!(Quenya, "lá" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_A.base] == "laa");
test_tengwar!(Quenya, "lé" => [TENGWA_LAMBE, TEHTA_E.base, TEHTA_E.base] == "lee");
test_tengwar!(Quenya, "lí" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_I.base] == "lii");
test_tengwar!(Quenya, "ló" => [TENGWA_LAMBE, TEHTA_O.base, TEHTA_O.base] == "loo");
test_tengwar!(Quenya, "lú" => [TENGWA_LAMBE, TEHTA_U.base, TEHTA_U.base] == "luu");
test_tengwar!(Quenya[vowels=Separate], "lá" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_A.base]);
test_tengwar!(Quenya[vowels=Separate], "lé" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_E.base]);
test_tengwar!(Quenya[vowels=Separate], "lí" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_I.base]);
test_tengwar!(Quenya[vowels=Separate], "ló" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_O.base]);
test_tengwar!(Quenya[vowels=Separate], "lú" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_U.base]);
test_tengwar!(Quenya[vowels=Doubled], "lá" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_A.base]);
test_tengwar!(Quenya[vowels=Doubled], "lé" => [TENGWA_LAMBE, TEHTA_E.base, TEHTA_E.base]);
test_tengwar!(Quenya[vowels=Doubled], "lí" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_I.base]);
test_tengwar!(Quenya[vowels=Doubled], "ló" => [TENGWA_LAMBE, TEHTA_O.base, TEHTA_O.base]);
test_tengwar!(Quenya[vowels=Doubled], "lú" => [TENGWA_LAMBE, TEHTA_U.base, TEHTA_U.base]);
test_tengwar!(Quenya[vowels=Unique], "lá" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_A.base]);
test_tengwar!(Quenya[vowels=Unique], "lé" => [TENGWA_LAMBE, TEHTA_E.alternate.unwrap()]);
test_tengwar!(Quenya[vowels=Unique], "lí" => [TENGWA_LAMBE, CARRIER_LONG, TEHTA_I.base]);
test_tengwar!(Quenya[vowels=Unique], "ló" => [TENGWA_LAMBE, TEHTA_O.alternate.unwrap()]);
test_tengwar!(Quenya[vowels=Unique], "lú" => [TENGWA_LAMBE, TEHTA_U.alternate.unwrap()]);
}