1175 lines
56 KiB
TypeScript
1175 lines
56 KiB
TypeScript
/**
|
||
* Copyright (c) 2021 lingdocs.com
|
||
*
|
||
* This source code is licensed under the MIT license found in the
|
||
* LICENSE file in the root directory of this source tree.
|
||
*
|
||
*/
|
||
|
||
import {
|
||
concatPsString,
|
||
makePsString,
|
||
removeEndingL,
|
||
yulEndingInfinitive,
|
||
mapVerbBlock,
|
||
allMascFirstInflection,
|
||
addToForm,
|
||
unisexInfToObjectMatrix,
|
||
complementInflects,
|
||
concatInflections,
|
||
psStringEquals,
|
||
removeRetroflexR,
|
||
splitDoubleWord,
|
||
endsInConsonant,
|
||
addOEnding,
|
||
removeFVarients,
|
||
endsInShwa,
|
||
splitPsByVarients,
|
||
endsWith,
|
||
} from "./p-text-helpers";
|
||
import * as T from "../types";
|
||
import {
|
||
pastEndings
|
||
} from "./grammar-units";
|
||
|
||
test(`concatPsString should work`, () => {
|
||
const input = concatPsString(
|
||
{ p: "لیکل", f: "leekul" },
|
||
{ p: "ی", f: "ey" },
|
||
" ",
|
||
{ p: "دی", f: "dey" },
|
||
);
|
||
expect(input).toEqual({ p: "لیکلی دی", f: "leekuley dey" });
|
||
// test with length options added
|
||
const inputWLength = concatPsString(
|
||
{ p: "خفه", f: "khufa" },
|
||
" ",
|
||
{
|
||
short: { p: "کړو", f: "kRo" },
|
||
long: { p: "کړلو", f: "kRulo" },
|
||
},
|
||
);
|
||
expect(inputWLength).toEqual({
|
||
short: { p: "خفه کړو", f: "khufa kRo" },
|
||
long: { p: "خفه کړلو", f: "khufa kRulo" },
|
||
});
|
||
// even with minin
|
||
const inputWMini = concatPsString(
|
||
{ p: "خفه", f: "khufa" },
|
||
" ",
|
||
{
|
||
short: { p: "کړی", f: "kRey" },
|
||
long: { p: "کړلی", f: "kRuley" },
|
||
},
|
||
" ",
|
||
{
|
||
mini: { p: "کو", f: "ko" },
|
||
short: { p: "کړو", f: "kRo" },
|
||
long: { p: "کړلو", f: "kRulo" },
|
||
},
|
||
);
|
||
expect(inputWMini).toEqual({
|
||
mini: { p: "خفه کړی کو", f: "khufa kRey ko" },
|
||
short: { p: "خفه کړی کړو", f: "khufa kRey kRo" },
|
||
long: { p: "خفه کړلی کړلو", f: "khufa kRuley kRulo" },
|
||
});
|
||
// also with personInflections
|
||
const inputWPersInfs = concatPsString(
|
||
{
|
||
mascSing: { p: "پوخ", f: "pokh" },
|
||
mascPlur: { p: "پاخه", f: "paakhu" },
|
||
femSing: { p: "پخه", f: "pakha" },
|
||
femPlur: { p: "پخې", f: "pakhe" },
|
||
},
|
||
" ",
|
||
{
|
||
short: { p: "ک", f: "k" },
|
||
long: { p: "کړ", f: "kR" },
|
||
},
|
||
);
|
||
expect(inputWPersInfs).toEqual({
|
||
mascSing: {
|
||
short: { p: "پوخ ک", f: "pokh k" },
|
||
long: { p: "پوخ کړ", f: "pokh kR" },
|
||
},
|
||
mascPlur: {
|
||
short: { p: "پاخه ک", f: "paakhu k" },
|
||
long: { p: "پاخه کړ", f: "paakhu kR" },
|
||
},
|
||
femSing: {
|
||
short: { p: "پخه ک", f: "pakha k" },
|
||
long: { p: "پخه کړ", f: "pakha kR" },
|
||
},
|
||
femPlur: {
|
||
short: { p: "پخې ک", f: "pakhe k" },
|
||
long: { p: "پخې کړ", f: "pakhe kR" },
|
||
},
|
||
});
|
||
});
|
||
|
||
test(`addToForm should work`, () => {
|
||
const block: T.VerbBlock = [
|
||
[[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]],
|
||
[[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]],
|
||
[[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]],
|
||
[[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]],
|
||
[[{p: "شوی", f: "shuwey"}], [{p: "شوي", f: "shuwee"}]],
|
||
[[{p: "شوې", f: "shuwe"}], [{p: "شوې", f: "shuwe"}]],
|
||
];
|
||
const result = addToForm([{ p: "خفه", f: "khufa" }, " "], block);
|
||
expect(result).toEqual([
|
||
[[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]],
|
||
[[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]],
|
||
[[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]],
|
||
[[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]],
|
||
[[{p: "خفه شوی", f: "khufa shuwey"}], [{p: "خفه شوي", f: "khufa shuwee"}]],
|
||
[[{p: "خفه شوې", f: "khufa shuwe"}], [{p: "خفه شوې", f: "khufa shuwe"}]],
|
||
]);
|
||
const result2 = addToForm([{
|
||
short: { p: "کړی", f: "kRey" },
|
||
long: { p: "کړلی", f: "kRuley" },
|
||
}, " "], block);
|
||
expect(result2).toEqual({
|
||
short: [
|
||
[[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]],
|
||
[[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]],
|
||
[[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]],
|
||
[[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]],
|
||
[[{p: "کړی شوی", f: "kRey shuwey"}], [{p: "کړی شوي", f: "kRey shuwee"}]],
|
||
[[{p: "کړی شوې", f: "kRey shuwe"}], [{p: "کړی شوې", f: "kRey shuwe"}]],
|
||
],
|
||
long: [
|
||
[[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]],
|
||
[[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]],
|
||
[[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]],
|
||
[[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]],
|
||
[[{p: "کړلی شوی", f: "kRuley shuwey"}], [{p: "کړلی شوي", f: "kRuley shuwee"}]],
|
||
[[{p: "کړلی شوې", f: "kRuley shuwe"}], [{p: "کړلی شوې", f: "kRuley shuwe"}]],
|
||
],
|
||
});
|
||
const result3 = addToForm([
|
||
{
|
||
masc: [
|
||
[{ p: "زوړ", f: "zoR" }],
|
||
[{ p: "زاړه", f: "zaaRu" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
fem: [
|
||
[{ p: "زړه", f: "zaRa" }],
|
||
[{ p: "زړې", f: "zaRe" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
},
|
||
" ",
|
||
[
|
||
{ p: "کړل", f: "kRul" },
|
||
{
|
||
short: { p: "کړی", f: "kRey" },
|
||
long: { p: "کړلی", f: "kRuley" },
|
||
},
|
||
],
|
||
" ",
|
||
], block);
|
||
const expected3 = {
|
||
long: [
|
||
[
|
||
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}],
|
||
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}]
|
||
],
|
||
[
|
||
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}],
|
||
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}],
|
||
],
|
||
[
|
||
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}],
|
||
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}]
|
||
],
|
||
[
|
||
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}],
|
||
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}],
|
||
],
|
||
[
|
||
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړلی شوی", f: "zoR kRuley shuwey"}],
|
||
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړلی شوي", f: "zaaRu kRuley shuwee"}]
|
||
],
|
||
[
|
||
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړلی شوې", f: "zaRa kRuley shuwe"}],
|
||
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړلی شوې", f: "zaRe kRuley shuwe"}],
|
||
],
|
||
],
|
||
short: [
|
||
[
|
||
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}],
|
||
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}]
|
||
],
|
||
[
|
||
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}],
|
||
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}],
|
||
],
|
||
[
|
||
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}],
|
||
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}]
|
||
],
|
||
[
|
||
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}],
|
||
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}],
|
||
],
|
||
[
|
||
[{p: "زوړ کړل شوی", f: "zoR kRul shuwey"}, {p: "زوړ کړی شوی", f: "zoR kRey shuwey"}],
|
||
[{p: "زاړه کړل شوي", f: "zaaRu kRul shuwee"}, {p: "زاړه کړی شوي", f: "zaaRu kRey shuwee"}]
|
||
],
|
||
[
|
||
[{p: "زړه کړل شوې", f: "zaRa kRul shuwe"}, {p: "زړه کړی شوې", f: "zaRa kRey shuwe"}],
|
||
[{p: "زړې کړل شوې", f: "zaRe kRul shuwe"}, {p: "زړې کړی شوې", f: "zaRe kRey shuwe"}],
|
||
],
|
||
],
|
||
};
|
||
expect(result3).toEqual(expected3);
|
||
// check with imperative
|
||
const impFormIntrans: T.ImperativeForm = [
|
||
[[{p: "شه", f: "sha"}], [{p: "شئ", f: "sheyy"}]],
|
||
[[{p: "شه", f: "sha"}], [{p: "شئ", f: "sheyy"}]],
|
||
];
|
||
const impFormTrans: T.ImperativeForm = [
|
||
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
|
||
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
|
||
];
|
||
const impFormTransOpts: T.ImperativeForm = {
|
||
short: [
|
||
[[{p: "که", f: "ka"}], [{p: "کئ", f: "keyy"}]],
|
||
[[{p: "که", f: "ka"}], [{p: "کئ", f: "keyy"}]],
|
||
],
|
||
long: [
|
||
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
|
||
[[{p: "کړه", f: "kRa"}], [{p: "کړئ", f: "kReyy"}]],
|
||
],
|
||
}
|
||
const unisexComp: T.UnisexInflections = {
|
||
masc: [
|
||
[{ p: "زوړ", f: "zoR" }],
|
||
[{ p: "زاړه", f: "zaaRu" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
fem: [
|
||
[{ p: "زړه", f: "zaRa" }],
|
||
[{ p: "زړې", f: "zaRe" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
};
|
||
const objectMatrix: T.OptionalPersonInflections<T.PsString> = {
|
||
mascSing: { p: "زوړ", f: "zoR" },
|
||
mascPlur: { p: "زاړه", f: "zaaRu" },
|
||
femSing: { p: "زړه", f: "zaRa" },
|
||
femPlur: { p: "زړې", f: "zaRe" },
|
||
};
|
||
expect(addToForm([unisexComp, " "], impFormIntrans)).toEqual([
|
||
[[{p: "زوړ شه", f: "zoR sha"}], [{p: "زاړه شئ", f: "zaaRu sheyy"}]],
|
||
[[{p: "زړه شه", f: "zaRa sha"}], [{p: "زړې شئ", f: "zaRe sheyy"}]],
|
||
]);
|
||
expect(addToForm([objectMatrix, " "], impFormTrans)).toEqual({
|
||
mascSing: [
|
||
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
|
||
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
|
||
],
|
||
mascPlur: [
|
||
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
|
||
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
|
||
],
|
||
femSing: [
|
||
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
|
||
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
|
||
],
|
||
femPlur: [
|
||
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
|
||
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
|
||
],
|
||
});
|
||
expect(addToForm([objectMatrix, " "], impFormTransOpts)).toEqual({
|
||
mascSing: {
|
||
short: [
|
||
[[{p: "زوړ که", f: "zoR ka"}], [{p: "زوړ کئ", f: "zoR keyy"}]],
|
||
[[{p: "زوړ که", f: "zoR ka"}], [{p: "زوړ کئ", f: "zoR keyy"}]],
|
||
],
|
||
long: [
|
||
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
|
||
[[{p: "زوړ کړه", f: "zoR kRa"}], [{p: "زوړ کړئ", f: "zoR kReyy"}]],
|
||
],
|
||
},
|
||
mascPlur: {
|
||
short: [
|
||
[[{p: "زاړه که", f: "zaaRu ka"}], [{p: "زاړه کئ", f: "zaaRu keyy"}]],
|
||
[[{p: "زاړه که", f: "zaaRu ka"}], [{p: "زاړه کئ", f: "zaaRu keyy"}]],
|
||
],
|
||
long: [
|
||
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
|
||
[[{p: "زاړه کړه", f: "zaaRu kRa"}], [{p: "زاړه کړئ", f: "zaaRu kReyy"}]],
|
||
],
|
||
},
|
||
femSing: {
|
||
short: [
|
||
[[{p: "زړه که", f: "zaRa ka"}], [{p: "زړه کئ", f: "zaRa keyy"}]],
|
||
[[{p: "زړه که", f: "zaRa ka"}], [{p: "زړه کئ", f: "zaRa keyy"}]],
|
||
],
|
||
long: [
|
||
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
|
||
[[{p: "زړه کړه", f: "zaRa kRa"}], [{p: "زړه کړئ", f: "zaRa kReyy"}]],
|
||
],
|
||
},
|
||
femPlur: {
|
||
short: [
|
||
[[{p: "زړې که", f: "zaRe ka"}], [{p: "زړې کئ", f: "zaRe keyy"}]],
|
||
[[{p: "زړې که", f: "zaRe ka"}], [{p: "زړې کئ", f: "zaRe keyy"}]],
|
||
],
|
||
long: [
|
||
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
|
||
[[{p: "زړې کړه", f: "zaRe kRa"}], [{p: "زړې کړئ", f: "zaRe kReyy"}]],
|
||
],
|
||
},
|
||
});
|
||
const matrixBase: T.VerbForm = {
|
||
mascSing: [
|
||
[[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
|
||
[[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
|
||
[[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
|
||
[[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
|
||
[[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
[[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
],
|
||
mascPlur: [
|
||
[[{p: "ستړي ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
|
||
[[{p: "ستړي ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
|
||
[[{p: "ستړي ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
|
||
[[{p: "ستړي ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
|
||
[[{p: "ستړي ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
[[{p: "ستړي ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
],
|
||
femSing: [
|
||
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
],
|
||
femPlur: [
|
||
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
[[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
[[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
[[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
],
|
||
};
|
||
expect(addToForm([objectMatrix, " ", { p: "به", f: "ba" }, " "], matrixBase)).toEqual({
|
||
mascSing: [
|
||
[[{p: "زوړ به ستړی کوم", f: "zoR ba stuRey kawum"}], [{p: "زوړ به ستړی کوو", f: "zoR ba stuRey kawoo"}]],
|
||
[[{p: "زوړ به ستړی کوم", f: "zoR ba stuRey kawum"}], [{p: "زوړ به ستړی کوو", f: "zoR ba stuRey kawoo"}]],
|
||
[[{p: "زوړ به ستړی کوې", f: "zoR ba stuRey kawe"}], [{p: "زوړ به ستړی کوئ", f: "zoR ba stuRey kaweyy"}]],
|
||
[[{p: "زوړ به ستړی کوې", f: "zoR ba stuRey kawe"}], [{p: "زوړ به ستړی کوئ", f: "zoR ba stuRey kaweyy"}]],
|
||
[[{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}], [{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}]],
|
||
[[{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}], [{p: "زوړ به ستړی کوي", f: "zoR ba stuRey kawee"}]],
|
||
],
|
||
mascPlur: [
|
||
[[{p: "زاړه به ستړي ستړي کوم", f: "zaaRu ba stuRee kawum"}], [{p: "زاړه به ستړي کوو", f: "zaaRu ba stuRee kawoo"}]],
|
||
[[{p: "زاړه به ستړي ستړي کوم", f: "zaaRu ba stuRee kawum"}], [{p: "زاړه به ستړي کوو", f: "zaaRu ba stuRee kawoo"}]],
|
||
[[{p: "زاړه به ستړي ستړي کوې", f: "zaaRu ba stuRee kawe"}], [{p: "زاړه به ستړي کوئ", f: "zaaRu ba stuRee kaweyy"}]],
|
||
[[{p: "زاړه به ستړي ستړي کوې", f: "zaaRu ba stuRee kawe"}], [{p: "زاړه به ستړي کوئ", f: "zaaRu ba stuRee kaweyy"}]],
|
||
[[{p: "زاړه به ستړي ستړي کوي", f: "zaaRu ba stuRee kawee"}], [{p: "زاړه به ستړي کوي", f: "zaaRu ba stuRee kawee"}]],
|
||
[[{p: "زاړه به ستړي ستړي کوي", f: "zaaRu ba stuRee kawee"}], [{p: "زاړه به ستړي کوي", f: "zaaRu ba stuRee kawee"}]],
|
||
],
|
||
femSing: [
|
||
[[{p: "زړه به ستړې کوم", f: "zaRa ba stuRe kawum"}], [{p: "زړه به ستړې کوو", f: "zaRa ba stuRe kawoo"}]],
|
||
[[{p: "زړه به ستړې کوم", f: "zaRa ba stuRe kawum"}], [{p: "زړه به ستړې کوو", f: "zaRa ba stuRe kawoo"}]],
|
||
[[{p: "زړه به ستړې کوې", f: "zaRa ba stuRe kawe"}], [{p: "زړه به ستړې کوئ", f: "zaRa ba stuRe kaweyy"}]],
|
||
[[{p: "زړه به ستړې کوې", f: "zaRa ba stuRe kawe"}], [{p: "زړه به ستړې کوئ", f: "zaRa ba stuRe kaweyy"}]],
|
||
[[{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}], [{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}]],
|
||
[[{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}], [{p: "زړه به ستړې کوي", f: "zaRa ba stuRe kawee"}]],
|
||
],
|
||
femPlur: [
|
||
[[{p: "زړې به ستړې کوم", f: "zaRe ba stuRe kawum"}], [{p: "زړې به ستړې کوو", f: "zaRe ba stuRe kawoo"}]],
|
||
[[{p: "زړې به ستړې کوم", f: "zaRe ba stuRe kawum"}], [{p: "زړې به ستړې کوو", f: "zaRe ba stuRe kawoo"}]],
|
||
[[{p: "زړې به ستړې کوې", f: "zaRe ba stuRe kawe"}], [{p: "زړې به ستړې کوئ", f: "zaRe ba stuRe kaweyy"}]],
|
||
[[{p: "زړې به ستړې کوې", f: "zaRe ba stuRe kawe"}], [{p: "زړې به ستړې کوئ", f: "zaRe ba stuRe kaweyy"}]],
|
||
[[{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}], [{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}]],
|
||
[[{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}], [{p: "زړې به ستړې کوي", f: "zaRe ba stuRe kawee"}]],
|
||
],
|
||
});
|
||
const kawulSimpPast: T.VerbForm = {
|
||
mini: [
|
||
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
|
||
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
|
||
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
|
||
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
|
||
[[{p: "که", f: "ku"}, {p: "کو", f: "ko"}], [{p: "کړل", f: "kRul"}, { p: "کو", f: "koo" }]],
|
||
[[{p: "که", f: "ka"}], [{p: "کې", f: "ke"}]],
|
||
],
|
||
short: [
|
||
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
|
||
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
|
||
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
|
||
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
|
||
[[{p: "کړه", f: "kRu"}, {p: "کړو", f: "kRo"}, {p: "کړ", f: "kuR"}], [{p: "کړل", f: "kRul"}, {p: "کړو", f: "kRoo" }]],
|
||
[[{p: "کړه", f: "kRa"}], [{p: "کړې", f: "kRe"}]],
|
||
],
|
||
long: [
|
||
[[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]],
|
||
[[{p: "کړلم", f: "kRulum"}], [{p: "کړلو", f: "kRuloo"}]],
|
||
[[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]],
|
||
[[{p: "کړلې", f: "kRule"}], [{p: "کړلئ", f: "kRuleyy"}]],
|
||
[[{p: "کړله", f: "kRulu"}, {p: "کړلو", f: "kRulo"}], [{p: "کړل", f: "kRul"}, {p: "کړلو", f: "kRuloo"}]],
|
||
[[{p: "کړله", f: "kRula"}], [{p: "کړلې", f: "kRule"}]],
|
||
],
|
||
};
|
||
expect(addToForm([{ p: "به", f: "ba" }, " "], kawulSimpPast)).toEqual({
|
||
mini: [
|
||
[[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]],
|
||
[[{p: "به کم", f: "ba kum"}], [{p: "به کو", f: "ba koo"}]],
|
||
[[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]],
|
||
[[{p: "به کې", f: "ba ke"}], [{p: "به کئ", f: "ba keyy"}]],
|
||
[[{p: "به که", f: "ba ku"}, {p: "به کو", f: "ba ko"}], [{p: "به کړل", f: "ba kRul"}, { p: "به کو", f: "ba koo" }]],
|
||
[[{p: "به که", f: "ba ka"}], [{p: "به کې", f: "ba ke"}]],
|
||
],
|
||
short: [
|
||
[[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]],
|
||
[[{p: "به کړم", f: "ba kRum"}], [{p: "به کړو", f: "ba kRoo"}]],
|
||
[[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]],
|
||
[[{p: "به کړې", f: "ba kRe"}], [{p: "به کړئ", f: "ba kReyy"}]],
|
||
[[{p: "به کړه", f: "ba kRu"}, {p: "به کړو", f: "ba kRo"}, {p: "به کړ", f: "ba kuR"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړو", f: "ba kRoo" }]],
|
||
[[{p: "به کړه", f: "ba kRa"}], [{p: "به کړې", f: "ba kRe"}]],
|
||
],
|
||
long: [
|
||
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
|
||
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
|
||
[[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]],
|
||
],
|
||
});
|
||
expect(addToForm([{
|
||
long: { p: "به", f: "ba" },
|
||
short: { p: "ب", f: "b" },
|
||
}, " "], kawulSimpPast)).toEqual({
|
||
mini: [
|
||
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
|
||
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
|
||
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
|
||
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
|
||
[[{p: "ب که", f: "b ku"}, {p: "ب کو", f: "b ko"}], [{p: "ب کړل", f: "b kRul"}, { p: "ب کو", f: "b koo" }]],
|
||
[[{p: "ب که", f: "b ka"}], [{p: "ب کې", f: "b ke"}]],
|
||
],
|
||
short: [
|
||
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
|
||
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
|
||
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
|
||
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
|
||
[[{p: "ب کړه", f: "b kRu"}, {p: "ب کړو", f: "b kRo"}, {p: "ب کړ", f: "b kuR"}], [{p: "ب کړل", f: "b kRul"}, {p: "ب کړو", f: "b kRoo" }]],
|
||
[[{p: "ب کړه", f: "b kRa"}], [{p: "ب کړې", f: "b kRe"}]],
|
||
],
|
||
long: [
|
||
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
|
||
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
|
||
[[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]],
|
||
],
|
||
});
|
||
expect(addToForm([[{
|
||
long: { p: "به", f: "ba" },
|
||
short: { p: "ب", f: "b" },
|
||
}], " "], kawulSimpPast)).toEqual({
|
||
mini: [
|
||
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
|
||
[[{p: "ب کم", f: "b kum"}], [{p: "ب کو", f: "b koo"}]],
|
||
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
|
||
[[{p: "ب کې", f: "b ke"}], [{p: "ب کئ", f: "b keyy"}]],
|
||
[[{p: "ب که", f: "b ku"}, {p: "ب کو", f: "b ko"}], [{p: "ب کړل", f: "b kRul"}, { p: "ب کو", f: "b koo" }]],
|
||
[[{p: "ب که", f: "b ka"}], [{p: "ب کې", f: "b ke"}]],
|
||
],
|
||
short: [
|
||
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
|
||
[[{p: "ب کړم", f: "b kRum"}], [{p: "ب کړو", f: "b kRoo"}]],
|
||
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
|
||
[[{p: "ب کړې", f: "b kRe"}], [{p: "ب کړئ", f: "b kReyy"}]],
|
||
[[{p: "ب کړه", f: "b kRu"}, {p: "ب کړو", f: "b kRo"}, {p: "ب کړ", f: "b kuR"}], [{p: "ب کړل", f: "b kRul"}, {p: "ب کړو", f: "b kRoo" }]],
|
||
[[{p: "ب کړه", f: "b kRa"}], [{p: "ب کړې", f: "b kRe"}]],
|
||
],
|
||
long: [
|
||
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړلم", f: "ba kRulum"}], [{p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
|
||
[[{p: "به کړلې", f: "ba kRule"}], [{p: "به کړلئ", f: "ba kRuleyy"}]],
|
||
[[{p: "به کړله", f: "ba kRulu"}, {p: "به کړلو", f: "ba kRulo"}], [{p: "به کړل", f: "ba kRul"}, {p: "به کړلو", f: "ba kRuloo"}]],
|
||
[[{p: "به کړله", f: "ba kRula"}], [{p: "به کړلې", f: "ba kRule"}]],
|
||
],
|
||
});
|
||
expect(addToForm([{
|
||
short: { p: "لیک", f: "leek" },
|
||
long: { p: "لیکل", f: "leekul" },
|
||
}], pastEndings)).toEqual({
|
||
short: [
|
||
[[{ p: "لیکم", f: "leekum" }], [{ p: "لیکو", f: "leekoo" }]],
|
||
[[{ p: "لیکم", f: "leekum" }], [{ p: "لیکو", f: "leekoo" }]],
|
||
[[{ p: "لیکې", f: "leeke" }], [{ p: "لیکئ", f: "leekeyy" }]],
|
||
[[{ p: "لیکې", f: "leeke" }], [{ p: "لیکئ", f: "leekeyy" }]],
|
||
[[{ p: "لیکه", f: "leeku" }, { p: "لیکو", f: "leeko"}], [{ p: "لیکل", f: "leekul" }]],
|
||
[[{ p: "لیکه", f: "leeka"}], [{ p: "لیکې", f: "leeke" }]],
|
||
],
|
||
long: [
|
||
[[{ p: "لیکلم", f: "leekulum" }], [{ p: "لیکلو", f: "leekuloo" }]],
|
||
[[{ p: "لیکلم", f: "leekulum" }], [{ p: "لیکلو", f: "leekuloo" }]],
|
||
[[{ p: "لیکلې", f: "leekule" }], [{ p: "لیکلئ", f: "leekuleyy" }]],
|
||
[[{ p: "لیکلې", f: "leekule" }], [{ p: "لیکلئ", f: "leekuleyy" }]],
|
||
[[{ p: "لیکله", f: "leekulu" }, { p: "لیکلو", f: "leekulo"}], [{ p: "لیکل", f: "leekul"}]],
|
||
[[{ p: "لیکله", f: "leekula"}], [{ p: "لیکلې", f: "leekule" }]],
|
||
],
|
||
});
|
||
expect(addToForm([{
|
||
long: { p: "تتت", f: "ttt" },
|
||
short: { p: "تت", f: "tt" },
|
||
mini: { p: "ت", f: "t" },
|
||
}, " "], {
|
||
long: [
|
||
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
|
||
[[{p: "کړم", f: "kRum"}], [{p: "کړو", f: "kRoo"}]],
|
||
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
|
||
[[{p: "کړې", f: "kRe"}], [{p: "کړئ", f: "kReyy"}]],
|
||
[[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]],
|
||
[[{p: "کړي", f: "kRee"}], [{p: "کړي", f: "kRee"}]],
|
||
],
|
||
short: [
|
||
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
|
||
[[{p: "کم", f: "kum"}], [{p: "کو", f: "koo"}]],
|
||
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
|
||
[[{p: "کې", f: "ke"}], [{p: "کئ", f: "keyy"}]],
|
||
[[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]],
|
||
[[{p: "کي", f: "kee"}], [{p: "کي", f: "kee"}]],
|
||
],
|
||
})).toEqual({
|
||
long: [
|
||
[[{p: "تتت کړم", f: "ttt kRum"}], [{p: "تتت کړو", f: "ttt kRoo"}]],
|
||
[[{p: "تتت کړم", f: "ttt kRum"}], [{p: "تتت کړو", f: "ttt kRoo"}]],
|
||
[[{p: "تتت کړې", f: "ttt kRe"}], [{p: "تتت کړئ", f: "ttt kReyy"}]],
|
||
[[{p: "تتت کړې", f: "ttt kRe"}], [{p: "تتت کړئ", f: "ttt kReyy"}]],
|
||
[[{p: "تتت کړي", f: "ttt kRee"}], [{p: "تتت کړي", f: "ttt kRee"}]],
|
||
[[{p: "تتت کړي", f: "ttt kRee"}], [{p: "تتت کړي", f: "ttt kRee"}]],
|
||
],
|
||
short: [
|
||
[[{p: "تت کم", f: "tt kum"}], [{p: "تت کو", f: "tt koo"}]],
|
||
[[{p: "تت کم", f: "tt kum"}], [{p: "تت کو", f: "tt koo"}]],
|
||
[[{p: "تت کې", f: "tt ke"}], [{p: "تت کئ", f: "tt keyy"}]],
|
||
[[{p: "تت کې", f: "tt ke"}], [{p: "تت کئ", f: "tt keyy"}]],
|
||
[[{p: "تت کي", f: "tt kee"}], [{p: "تت کي", f: "tt kee"}]],
|
||
[[{p: "تت کي", f: "tt kee"}], [{p: "تت کي", f: "tt kee"}]],
|
||
],
|
||
mini: [
|
||
[[{p: "ت کم", f: "t kum"}], [{p: "ت کو", f: "t koo"}]],
|
||
[[{p: "ت کم", f: "t kum"}], [{p: "ت کو", f: "t koo"}]],
|
||
[[{p: "ت کې", f: "t ke"}], [{p: "ت کئ", f: "t keyy"}]],
|
||
[[{p: "ت کې", f: "t ke"}], [{p: "ت کئ", f: "t keyy"}]],
|
||
[[{p: "ت کي", f: "t kee"}], [{p: "ت کي", f: "t kee"}]],
|
||
[[{p: "ت کي", f: "t kee"}], [{p: "ت کي", f: "t kee"}]],
|
||
],
|
||
});
|
||
});
|
||
|
||
test(`unisexInfToObjectMatrix`, () => {
|
||
expect(unisexInfToObjectMatrix({
|
||
masc: [
|
||
[{ p: "زوړ", f: "zoR" }],
|
||
[{ p: "زاړه", f: "zaaRu" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
fem: [
|
||
[{ p: "زړه", f: "zaRa" }],
|
||
[{ p: "زړې", f: "zaRe" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
})).toEqual({
|
||
mascSing: { p: "زوړ", f: "zoR" },
|
||
mascPlur: { p: "زاړه", f: "zaaRu" },
|
||
femSing: { p: "زړه", f: "zaRa" },
|
||
femPlur: { p: "زړې", f: "zaRe" },
|
||
});
|
||
});
|
||
|
||
test(`complementInflects`, () => {
|
||
expect(complementInflects({
|
||
masc: [
|
||
[{ p: "زوړ", f: "zoR" }],
|
||
[{ p: "زاړه", f: "zaaRu" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
fem: [
|
||
[{ p: "زړه", f: "zaRa" }],
|
||
[{ p: "زړې", f: "zaRe" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
})).toBe(true);
|
||
expect(complementInflects({
|
||
masc: [
|
||
[{ p: "خفه", f: "khufa" }],
|
||
[{ p: "خفه", f: "khufa" }],
|
||
[{ p: "خفه", f: "khufao" }],
|
||
],
|
||
fem: [
|
||
[{ p: "خفه", f: "khufa" }],
|
||
[{ p: "خفه", f: "khufa" }],
|
||
[{ p: "خفه", f: "khufa" }],
|
||
],
|
||
})).toBe(false);
|
||
});
|
||
|
||
test(`removeFVarients`, () => {
|
||
expect(removeFVarients("ist'imaal, istimaal")).toBe("ist'imaal");
|
||
expect(removeFVarients({ p: "معالوم", f: "ma'aalóom, maalóom" }))
|
||
.toEqual({ p: "معالوم", f: "ma'aalóom" });
|
||
expect(removeFVarients("kor")).toBe("kor");
|
||
});
|
||
|
||
test(`makePsString should work`, () => {
|
||
expect(makePsString("کور", "kor")).toEqual({ p: "کور", f: "kor" });
|
||
});
|
||
|
||
test(`removeEndingL should work`, () => {
|
||
expect(removeEndingL(makePsString("لیدل", "leedúl"))).toEqual(
|
||
makePsString("لید", "leed"),
|
||
);
|
||
expect(removeEndingL(makePsString("لیدل", "leedul"))).toEqual(
|
||
makePsString("لید", "leed"),
|
||
);
|
||
expect(removeEndingL(makePsString("پرېښود", "prexod"))).toEqual(
|
||
makePsString("پرېښود", "prexod"),
|
||
);
|
||
});
|
||
|
||
test(`yulEndingInfinitive should work`, () => {
|
||
expect(yulEndingInfinitive({ p: "وایل", f: "waayul" })).toBe(true);
|
||
expect(yulEndingInfinitive({ p: "لیکل", f: "leekúl" })).toBe(false);
|
||
});
|
||
|
||
test(`mapVerbBlock should work`, () => {
|
||
expect(
|
||
mapVerbBlock(
|
||
(ps: T.PsString) => concatPsString({ p: "به", f: "ba" }, " ", ps),
|
||
[
|
||
[[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
|
||
[[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
|
||
[[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
|
||
[[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
|
||
[[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]],
|
||
[[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]],
|
||
],
|
||
)
|
||
).toEqual([
|
||
[[{p: "به کېدم", f: "ba kedum"}], [{p: "به کېدو", f: "ba kedoo"}]],
|
||
[[{p: "به کېدم", f: "ba kedum"}], [{p: "به کېدو", f: "ba kedoo"}]],
|
||
[[{p: "به کېدې", f: "ba kede"}], [{p: "به کېدئ", f: "ba kedeyy"}]],
|
||
[[{p: "به کېدې", f: "ba kede"}], [{p: "به کېدئ", f: "ba kedeyy"}]],
|
||
[[{p: "به کېده", f: "ba kedu"}, {p: "به کېدو", f: "ba kedo"}], [{p: "به کېدل", f: "ba kedul"}]],
|
||
[[{p: "به کېده", f: "ba keda"}], [{p: "به کېدې", f: "ba kede"}]],
|
||
])
|
||
});
|
||
|
||
test(`splitDoubleWord should work`, () => {
|
||
const orig: T.DictionaryEntry = {
|
||
ts: 123,
|
||
p: "ګډ وډ",
|
||
f: "guD wuD",
|
||
g: "guDwuD",
|
||
e: "mixed up",
|
||
c: "adj. doub.",
|
||
i: 1,
|
||
};
|
||
const out: [T.DictionaryEntry, T.DictionaryEntry] = [
|
||
{
|
||
ts: 123,
|
||
p: "ګډ",
|
||
f: "guD",
|
||
g: "guDwuD",
|
||
e: "mixed up",
|
||
c: "adj.",
|
||
i: 1,
|
||
},
|
||
{
|
||
ts: 123,
|
||
p: "وډ",
|
||
f: "wuD",
|
||
g: "guDwuD",
|
||
e: "mixed up",
|
||
c: "adj.",
|
||
i: 1,
|
||
},
|
||
]
|
||
expect(splitDoubleWord(orig)).toEqual(out);
|
||
});
|
||
|
||
// test(`allThirdPersMascPlur should work`, () => {
|
||
// expect(
|
||
// allThirdPersMascPlur([
|
||
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
|
||
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
|
||
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
|
||
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
|
||
// [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]]
|
||
// ])
|
||
// ).toEqual([
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// ]);
|
||
// expect(
|
||
// allThirdPersMascPlur({
|
||
// short: [
|
||
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
|
||
// [[{p: "کېدم", f: "kedum"}], [{p: "کېدو", f: "kedoo"}]],
|
||
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
|
||
// [[{p: "کېدې", f: "kede"}], [{p: "کېدئ", f: "kedeyy"}]],
|
||
// [[{p: "کېده", f: "kedu"}, {p: "کېدو", f: "kedo"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېده", f: "keda"}], [{p: "کېدې", f: "kede"}]],
|
||
// ],
|
||
// long: [
|
||
// [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]],
|
||
// [[{p: "کېدلم", f: "kedulum"}], [{p: "کېدلو", f: "keduloo"}]],
|
||
// [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]],
|
||
// [[{p: "کېدلې", f: "kedule"}], [{p: "کېدلئ", f: "keduleyy"}]],
|
||
// [[{p: "کېدله", f: "kedulu"}, {p: "کېدلو", f: "kedulo"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدله", f: "kedula"}], [{p: "کېدلې", f: "kedule"}]],
|
||
// ],
|
||
// })
|
||
// ).toEqual({
|
||
// short: [
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// ],
|
||
// long: [
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// [[{p: "کېدل", f: "kedul"}], [{p: "کېدل", f: "kedul"}]],
|
||
// ],
|
||
// });
|
||
// const matrixBase: VerbForm = {
|
||
// mascSing: [
|
||
// [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
|
||
// [[{p: "ستړی کوم", f: "stuRey kawum"}], [{p: "ستړی کوو", f: "stuRey kawoo"}]],
|
||
// [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
|
||
// [[{p: "ستړی کوې", f: "stuRey kawe"}], [{p: "ستړی کوئ", f: "stuRey kaweyy"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// ],
|
||
// mascPlur: [
|
||
// [[{p: "ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
|
||
// [[{p: "ستړي کوم", f: "stuRee kawum"}], [{p: "ستړي کوو", f: "stuRee kawoo"}]],
|
||
// [[{p: "ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
|
||
// [[{p: "ستړي کوې", f: "stuRee kawe"}], [{p: "ستړي کوئ", f: "stuRee kaweyy"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// ],
|
||
// femSing: [
|
||
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// ],
|
||
// femPlur: [
|
||
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
// [[{p: "ستړې کوم", f: "stuRe kawum"}], [{p: "ستړې کوو", f: "stuRe kawoo"}]],
|
||
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
// [[{p: "ستړې کوې", f: "stuRe kawe"}], [{p: "ستړې کوئ", f: "stuRe kaweyy"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// ],
|
||
// };
|
||
|
||
// // NOTE: This should never really be used, because this is only used of the past tense
|
||
// // versions on grammatically transitive verbs and the objectMatrixes are only used with
|
||
// // present forms of verbs, but testing to cover all type safety
|
||
// expect(allThirdPersMascPlur(matrixBase)).toEqual({
|
||
// mascSing: [
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// [[{p: "ستړی کوي", f: "stuRey kawee"}], [{p: "ستړی کوي", f: "stuRey kawee"}]],
|
||
// ],
|
||
// mascPlur: [
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// [[{p: "ستړي کوي", f: "stuRee kawee"}], [{p: "ستړي کوي", f: "stuRee kawee"}]],
|
||
// ],
|
||
// femSing: [
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// ],
|
||
// femPlur: [
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// [[{p: "ستړې کوي", f: "stuRe kawee"}], [{p: "ستړې کوي", f: "stuRe kawee"}]],
|
||
// ],
|
||
// });
|
||
// });
|
||
|
||
test(`allMascFirstInflection should work`, () => {
|
||
expect(
|
||
allMascFirstInflection({
|
||
masc: [
|
||
[{p: "زوړ", f: "zoR"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زړو", f: "zaRo"}],
|
||
],
|
||
fem: [
|
||
[{p: "زړه", f: "zaRa"}],
|
||
[{p: "زړې", f: "zaRe"}],
|
||
[{p: "زړو", f: "zaRo"}],
|
||
],
|
||
})
|
||
).toEqual({
|
||
masc: [
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
],
|
||
fem: [
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
],
|
||
})
|
||
expect(
|
||
allMascFirstInflection({
|
||
short: {
|
||
masc: [
|
||
[{p: "زوړ", f: "zoR"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زړو", f: "zaRo"}],
|
||
],
|
||
fem: [
|
||
[{p: "زړه", f: "zaRa"}],
|
||
[{p: "زړې", f: "zaRe"}],
|
||
[{p: "زړو", f: "zaRo"}],
|
||
],
|
||
},
|
||
long: {
|
||
masc: [
|
||
[{p: "زووړ", f: "zoooR"}],
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
[{p: "زړو", f: "zaRo"}],
|
||
],
|
||
fem: [
|
||
[{p: "زړه", f: "zaRa"}],
|
||
[{p: "زړې", f: "zaRe"}],
|
||
[{p: "زړو", f: "zaRo"}],
|
||
],
|
||
}
|
||
})
|
||
).toEqual({
|
||
short: {
|
||
masc: [
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
],
|
||
fem: [
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
[{p: "زاړه", f: "zaaRu"}],
|
||
],
|
||
},
|
||
long: {
|
||
masc: [
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
],
|
||
fem: [
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
[{p: "زاااړه", f: "zaaaaRu"}],
|
||
],
|
||
},
|
||
});
|
||
});
|
||
|
||
test('concat inflections', () => {
|
||
const unisexInfs: T.UnisexInflections = {
|
||
masc: [
|
||
[{ p: "زوړ", f: "zoR" }],
|
||
[{ p: "زاړه", f: "zaaRu" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
fem: [
|
||
[{ p: "زړه", f: "zaRa" }],
|
||
[{ p: "زړې", f: "zaRe" }],
|
||
[{ p: "زړو", f: "zaRo" }],
|
||
],
|
||
};
|
||
const partInfs: T.UnisexInflections = {
|
||
masc: [
|
||
[{p: "شوی", f: "shuwey"}],
|
||
[{p: "شوي", f: "shuwee"}],
|
||
[{p: "شویو", f: "shuwiyo" }, { p: "شوو", f: "shuwo" }],
|
||
],
|
||
fem: [
|
||
[{p: "شوې", f: "shuwe"}],
|
||
[{p: "شوې", f: "shuwe"}],
|
||
[{p: "شوو", f: "shuwo"}],
|
||
],
|
||
};
|
||
expect(concatInflections(unisexInfs, partInfs)).toEqual({
|
||
masc: [
|
||
[{p: "زوړ شوی", f: "zoR shuwey"}],
|
||
[{p: "زاړه شوي", f: "zaaRu shuwee"}],
|
||
[{p: "زړو شویو", f: "zaRo shuwiyo"}, {p: "زړو شوو", f: "zaRo shuwo"}],
|
||
],
|
||
fem: [
|
||
[{p: "زړه شوې", f: "zaRa shuwe"}],
|
||
[{p: "زړې شوې", f: "zaRe shuwe"}],
|
||
[{p: "زړو شوو", f: "zaRo shuwo"}],
|
||
],
|
||
});
|
||
// TODO: Should also work this way
|
||
// const unisexInfs2: UnisexInflections = {
|
||
// masc: [
|
||
// [{ p: "زوړ", f: "zoR" }, { p: "تور", f: "tor"}],
|
||
// [{ p: "زاړه", f: "zaaRu" }],
|
||
// [{ p: "زړو", f: "zaRo" }],
|
||
// ],
|
||
// fem: [
|
||
// [{ p: "زړه", f: "zaRa" }],
|
||
// [{ p: "زړې", f: "zaRe" }],
|
||
// [{ p: "زړو", f: "zaRo" }],
|
||
// ],
|
||
// };
|
||
// const partInfs2: UnisexInflections = {
|
||
// masc: [
|
||
// [{p: "شوی", f: "shuwey"}],
|
||
// [{p: "شوي", f: "shuwee"}],
|
||
// [{p: "شویو", f: "shuwiyo" }],
|
||
// ],
|
||
// fem: [
|
||
// [{p: "شوې", f: "shuwe"}],
|
||
// [{p: "شوې", f: "shuwe"}],
|
||
// [{p: "شوو", f: "shuwo"}],
|
||
// ],
|
||
// };
|
||
// expect(concatInflections(unisexInfs2, partInfs2)).toEqual({
|
||
// masc: [
|
||
// [{p: "زوړ شوی", f: "zoR shuwey"}, {p: "تور شوی", f: "tor shuwey"}],
|
||
// [{p: "زاړه شوي", f: "zaaRu shuwee"}],
|
||
// [{p: "زړو شویو", f: "zaRo shuwiyo"}],
|
||
// ],
|
||
// fem: [
|
||
// [{p: "زړه شوې", f: "zaRa shuwe"}],
|
||
// [{p: "زړې شوې", f: "zaRe shuwe"}],
|
||
// [{p: "زړو شوو", f: "zaRo shuwo"}],
|
||
// ],
|
||
// });
|
||
expect(concatInflections({ p: "خفه", f: "khufa" }, partInfs)).toEqual({
|
||
masc: [
|
||
[{p: "خفه شوی", f: "khufa shuwey"}],
|
||
[{p: "خفه شوي", f: "khufa shuwee"}],
|
||
[{p: "خفه شویو", f: "khufa shuwiyo"}, {p: "خفه شوو", f: "khufa shuwo"}],
|
||
],
|
||
fem: [
|
||
[{p: "خفه شوې", f: "khufa shuwe"}],
|
||
[{p: "خفه شوې", f: "khufa shuwe"}],
|
||
[{p: "خفه شوو", f: "khufa shuwo"}],
|
||
],
|
||
});
|
||
});
|
||
|
||
test("psStringEquals", () => {
|
||
expect(
|
||
psStringEquals({ p: "تور", f: "tor" }, { p: "تور", f: "tor" })
|
||
).toBe(true);
|
||
expect(
|
||
psStringEquals({ p: "بور", f: "bor" }, { p: "تور", f: "tor" })
|
||
).toBe(false);
|
||
expect(
|
||
psStringEquals({ p: "ملګری", f: "malgúrey" }, { p: "ملګری", f: "malgurey" })
|
||
).toBe(false);
|
||
expect(
|
||
psStringEquals({ p: "ملګری", f: "malgúrey" }, { p: "ملګری", f: "malgurey" }, true)
|
||
).toBe(true);
|
||
});
|
||
|
||
test("removeRetroflexR", () => {
|
||
expect(
|
||
removeRetroflexR({ p: "وکړ", f: "óokR" }),
|
||
).toEqual({ p: "وک", f: "óok" });
|
||
});
|
||
|
||
test("endsInAConsonant", () => {
|
||
const does: T.PsString[] = [
|
||
{ p: "پښتون", f: "puxtoon" },
|
||
{ p: "کور", f: "kor" },
|
||
{ p: "ګناه", f: "gUnaah" },
|
||
{ p: "زوی", f: "zooy" },
|
||
{ p: "ځای", f: "dzaay" },
|
||
];
|
||
const doesnt: T.PsString[] = [
|
||
{ p: "بابا", f: "baabaa" },
|
||
{ p: "قاضي", f: "qaazee" },
|
||
{ p: "ګناه", f: "gunaa" },
|
||
{ p: "اطلاع", f: "itlaa" },
|
||
];
|
||
does.forEach((x) => expect(endsInConsonant(x)).toBe(true));
|
||
doesnt.forEach((x) => expect(endsInConsonant(x)).toBe(false));
|
||
})
|
||
|
||
test("addOEnding", () => {
|
||
const tests: { in: T.PsString, out: T.PsString[] }[] = [
|
||
{
|
||
in: { p: "کتابونه", f: "kitaabóona" },
|
||
out: [{ p: "کتابونو", f: "kitaabóono" }],
|
||
},
|
||
{
|
||
in: { p: "کارغان", f: "kaargháan" },
|
||
out: [{ p: "کارغانو", f: "kaargháano" }],
|
||
},
|
||
{
|
||
in: { p: "کارغانې", f: "kaargháane" },
|
||
out: [{ p: "کارغانو", f: "kaargháano" }],
|
||
},
|
||
{
|
||
in: { p: "ښځې", f: "xúdze" },
|
||
out: [{ p: "ښځو", f: "xúdzo" }],
|
||
},
|
||
// TODO: Make this last thing accented??
|
||
{
|
||
in: { p: "کور", f: "kor" },
|
||
out: [{ p: "کورو", f: "koro" }],
|
||
},
|
||
{
|
||
in: { p: "سړی", f: "saRéy" },
|
||
out: [{ p: "سړیو", f: "saRíyo" }, { p: "سړو", f: "saRó"}],
|
||
},
|
||
{
|
||
in: { p: "افغانۍ", f: "afghaanúy" },
|
||
out: [{ p: "افغانیو", f: "afghaanúyo" }],
|
||
},
|
||
{
|
||
in: { p: "اوبه", f: "oobú" },
|
||
out: [{ p: "اوبو", f: "oobó" }],
|
||
},
|
||
{
|
||
in: { p: "شودې", f: "shoodé" },
|
||
out: [{ p: "شودو", f: "shoodó" }],
|
||
},
|
||
{
|
||
in: { p: "منابع", f: "manaabí" },
|
||
out: [{ p: "منابو", f: "manaabó" }],
|
||
},
|
||
{
|
||
in: { p: "انبیا", f: "ambiyáa" },
|
||
out: [{ p: "انبیاوو", f: "ambiyáawo" }],
|
||
},
|
||
{
|
||
in: { p: "مراجع", f: "maraají'" },
|
||
out: [{ p: "مراجو", f: "maraajó" }],
|
||
},
|
||
{
|
||
in: { p: "اتباع", f: "atbaa" },
|
||
out: [{ p: "اتباعوو", f: "atbaawo" }],
|
||
},
|
||
{
|
||
in: { p: "اتباع", "f": "atbáa'" },
|
||
out: [{ p: "اتباعوو", f: "atbáawo" }],
|
||
},
|
||
];
|
||
tests.forEach((t) => {
|
||
expect(addOEnding(t.in)).toEqual(t.out);
|
||
});
|
||
});
|
||
|
||
test("endsInShwa", () => {
|
||
expect(endsInShwa({ p: "ښایسته", f: "xaaystú" })).toBe(true);
|
||
expect(endsInShwa({ p: "ښایسته", f: "xaaystu" })).toBe(true);
|
||
expect(endsInShwa({ p: "ښایسته", f: "xaaysta" })).toBe(false);
|
||
expect(endsInShwa({ p: "کور", f: "kor" })).toBe(false);
|
||
});
|
||
|
||
test("splitPsByVarients", () => {
|
||
expect(splitPsByVarients({ p: "حوادث, حادثات", f: "hawáadis, haadisáat" }))
|
||
.toEqual([{ p: "حوادث", f: "hawáadis" }, { p: "حادثات", f: "haadisáat" }]);
|
||
// should work with Pashto comma too
|
||
expect(splitPsByVarients({ p: "حوادث، حادثات", f: "hawáadis, haadisáat" }))
|
||
.toEqual([{ p: "حوادث", f: "hawáadis" }, { p: "حادثات", f: "haadisáat" }]);
|
||
expect(splitPsByVarients({ p: "کور", f: "kor" }))
|
||
.toEqual([{ p: "کور", f: "kor" }]);
|
||
});
|
||
|
||
test("endsWith", () => {
|
||
expect(endsWith({ p: "ی", f: "ey" }, { p: "سړی", f: "saRey" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ی", f: "éy" }, { p: "سړی", f: "saRey" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ی", f: "éy" }, { p: "سړی", f: "saRey" }, true))
|
||
.toBe(false);
|
||
// f variations should be removed in case of using DictionaryEntry
|
||
expect(endsWith({ p: "ی", f: "ey" }, { p: "سړی", f: "saRey, saRaayyy" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ي", f: "ee" }, { p: "سړی", f: "saRey" }))
|
||
.toBe(false);
|
||
expect(endsWith({ p: "ه", f: "u" }, { p: "ویده", f: "weedú" }, true))
|
||
.toBe(false);
|
||
expect(endsWith({ p: "ه", f: "u" }, { p: "ویده", f: "weedú" }))
|
||
.toBe(true);
|
||
expect(endsWith([{ p: "وی", f: "ooy" }, { p: "ای", f: "aay" }], { p: "چای", f: "chaay" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ه"}, { p: "ویده", f: "weedú" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ت"}, { p: "ویده", f: "weedú" }))
|
||
.toBe(false);
|
||
expect(endsWith({ f: "u" }, { p: "ویده", f: "weedú" }))
|
||
.toBe(true);
|
||
expect(endsWith({ f: "u" }, { p: "ویده", f: "weedú" }, true))
|
||
.toBe(false);
|
||
expect(endsWith({ f: ["d", "t"] }, { p: "چت", f: "chat" }))
|
||
.toBe(true);
|
||
expect(endsWith({ f: ["d", "D"] }, { p: "چت", f: "chat" }))
|
||
.toBe(false);
|
||
expect(endsWith({ p: ["د", "ت"] }, { p: "چت", f: "chat" }))
|
||
.toBe(true);
|
||
expect(endsWith([{ p: "ای", f: "aay" }, { p: ["د", "ت"] }], { p: "چت", f: "chat" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: ["ډ", "د"] }, { p: "چت", f: "chat" }))
|
||
.toBe(false);
|
||
// ignore '
|
||
expect(endsWith({ p: "ا", f: "aa" }, { p: "اعدا", f: "idaa'" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ا", f: "aa'" }, { p: "اعدا", f: "idaa" }))
|
||
.toBe(true);
|
||
// ability to curry
|
||
expect(endsWith({ p: "ی", f: "ey" })({ p: "سړی", f: "saRéy" }))
|
||
.toBe(true);
|
||
expect(endsWith({ p: "ی", f: "ey" }, true)({ p: "سړی", f: "saRéy" }))
|
||
.toBe(false);
|
||
expect(endsWith({ f: ["d", "D"] })({ p: "چت", f: "chat" }))
|
||
.toBe(false);
|
||
}); |