2021-03-09 12:39:13 +00:00
/ * *
* 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 .
*
* /
2021-09-16 17:52:52 +00:00
import { standardizeEntry , validateEntry } from "./validate-entry" ;
2021-03-09 12:39:13 +00:00
import * as T from "../types" ;
2021-09-16 17:52:52 +00:00
import { standardizePhonetics } from "./standardize-pashto" ;
2021-03-09 12:39:13 +00:00
const toTest : {
input : any ,
output : T.DictionaryEntryError | { ok : true } | { checkComplement : true } ,
} [ ] = [
{
input : { ts : undefined } ,
output : {
errors : [ "missing ts" , "missing i" , "missing p" , "missing f" , "missing e" ] ,
p : "" ,
f : "" ,
e : "" ,
erroneousFields : [ "ts" , "i" , "p" , "f" , "e" ] ,
ts : 0 ,
} ,
} ,
{
input : { ts : 123 , p : "کور" , e : "house" } ,
output : {
errors : [ "missing i" , "missing f" ] ,
p : "کور" ,
f : "" ,
ts : 123 ,
e : "house" ,
erroneousFields : [ "i" , "f" ] ,
} ,
} ,
{
input : { "i" : 293 , "ts" : 1527821299 , "p" : "اخطار" , "f" : "ixtáar" , "e" : "warning, reprimand, admonishment" , "c" : "n. m." } ,
output : {
errors : [ "script and phonetics do not match for p and f" ] ,
p : "اخطار" ,
f : "ixtáar" ,
e : "warning, reprimand, admonishment" ,
ts : 1527821299 ,
erroneousFields : [ "p" , "f" ] ,
} ,
} ,
{
input : { "i" : 2433 , "ts" : 1527815197 , "p" : "پښتون" , "f" : "puxtoon" , "e" : "Pashtun" , "c" : "n. m. unisex / adj. irreg." , "infap" : "پښتانه" , "infaf" : "puxtaanu" , "infbf" : "puxtan" } ,
output : {
errors : [ "missing infbp" ] ,
p : "پښتون" ,
f : "puxtoon" ,
e : "Pashtun" ,
ts : 1527815197 ,
erroneousFields : [ "infbp" ] ,
} ,
} ,
{
input : { "i" : 2433 , "ts" : 1527815197 , "p" : "پښتون" , "f" : "puxtoon" , "e" : "Pashtun" , "c" : "n. m. unisex / adj. irreg." , "infap" : "پښتانه" , "infaf" : "puxtaanu" , "infbp" : "پښتن" } ,
output : {
errors : [ "missing infbf" ] ,
p : "پښتون" ,
f : "puxtoon" ,
e : "Pashtun" ,
ts : 1527815197 ,
erroneousFields : [ "infbf" ] ,
} ,
} ,
{
input : { "i" : 2433 , "ts" : 1527815197 , "p" : "پښتون" , "f" : "puxtoon" , "e" : "Pashtun" , "c" : "n. m. unisex / adj. irreg." , "infap" : "پښتانه" , "infaf" : "puktaanu" , "infbp" : "پښتن" } ,
output : {
errors : [ "script and phonetics do not match for infap and infaf" , "missing infbf" ] ,
p : "پښتون" ,
f : "puxtoon" ,
e : "Pashtun" ,
ts : 1527815197 ,
erroneousFields : [ "infap" , "infaf" , "infbf" ] ,
} ,
} ,
{
input : { "i" : 5000 , "ts" : 1527819674 , "p" : "څملاستل" , "f" : "tsumlaastúl" , "e" : "to lie down" , "l" : 1596485996977 , "separationAtP" : 2 , "c" : "v. intrans. seperable" , "psp" : "څمل" , "psf" : "tsaml" , "noOo" : true } ,
output : {
errors : [ "missing separationAtF" ] ,
p : "څملاستل" ,
f : "tsumlaastúl" ,
e : "to lie down" ,
ts : 1527819674 ,
erroneousFields : [ "separationAtF" ] ,
} ,
} ,
{
input : { "i" : 5000 , "ts" : 1527819674 , "p" : "څملاستل" , "f" : "sumlaastúl" , "e" : "to lie down" , "l" : 1596485996977 , "separationAtP" : 2 , "c" : "v. intrans. seperable" , "psp" : "څمل" , "psf" : "tsaml" , "noOo" : true } ,
output : {
errors : [ "script and phonetics do not match for p and f" , "missing separationAtF" ] ,
p : "څملاستل" ,
f : "sumlaastúl" ,
e : "to lie down" ,
ts : 1527819674 ,
erroneousFields : [ "p" , "f" , "separationAtF" ] ,
} ,
} ,
{
input : { "i" : 5000 , "ts" : 1527819674 , "p" : "څملاستل" , "f" : "tsumlaastúl" , "e" : "to lie down" , "l" : 1596485996977 , "separationAtF" : 4 , "c" : "v. intrans. seperable" , "psp" : "څمل" , "psf" : "tsaml" , "noOo" : true } ,
output : {
errors : [ "missing separationAtP" ] ,
p : "څملاستل" ,
f : "tsumlaastúl" ,
e : "to lie down" ,
ts : 1527819674 ,
erroneousFields : [ "separationAtP" ] ,
} ,
} ,
{
input : { "i" : 2222 , "ts" : 1571859113828 , "p" : "پخول" , "f" : "pakhawul" , "e" : "to cook, prepare, to cause to ripen, mature" , "c" : "v. stat. comp. trans." } ,
output : {
errors : [ "missing complement for compound verb" ] ,
p : "پخول" ,
f : "pakhawul" ,
e : "to cook, prepare, to cause to ripen, mature" ,
ts : 1571859113828 ,
erroneousFields : [ "l" ] ,
} ,
} ,
{
input : { "i" : 2222 , "ts" : 1571859113828 , "p" : "پخول" , "f" : "pakhawul" , "e" : "to cook, prepare, to cause to ripen, mature" , "l" : 1574867531681 , "c" : "v. stat. comp. trans." } ,
output : {
checkComplement : true ,
} ,
} ,
{
input : { "i" : 2231 , "ts" : 1527812013 , "p" : "پراخ" , "f" : "praakh, paráakh" , "e" : "wide, broad, spacious, vast" , "c" : "adj." } ,
output : { ok : true } ,
} ,
{
input : { "i" : 0 , "ts" : 1527812013 , "p" : "پراخ" , "f" : "praakh, paráakh" , "e" : "wide, broad, spacious, vast" , "c" : "adj." } ,
output : { ok : true } ,
} ,
{
input : { "i" : 12 , "ts" : 1575058859661 , "p" : "آبدار" , "f" : "aawdáar" , "e" : "watery, damp, humid, juicy" , "c" : "adj." } ,
output : {
errors : [ "script and phonetics do not match for p and f" ] ,
p : "آبدار" ,
f : "aawdáar" ,
e : "watery, damp, humid, juicy" ,
ts : 1575058859661 ,
erroneousFields : [ "p" , "f" ] ,
} ,
} ,
{
input : { "i" : 12 , "ts" : 1575058859661 , "p" : "آبدار" , "f" : "aawdáar" , "e" : "watery, damp, humid, juicy" , "c" : "adj." , "diacExcept" : true } ,
output : { ok : true } ,
} ,
] ;
test ( "validateEntry should work" , ( ) = > {
toTest . forEach ( ( t ) = > {
expect ( validateEntry ( t . input as T . DictionaryEntry ) ) . toEqual ( t . output ) ;
} ) ;
} ) ;
2021-09-16 17:52:52 +00:00
test ( "standardizeEntry" , ( ) = > {
expect ( standardizeEntry ( { "i" : 195 , "ts" : 1527822036 , "p" : "اجتماعي" , "f" : "ijtimaa‘ ee, ijtimaayee" , "g" : "ijtimaaee,ijtimaayee" , "e" : "public, social, societal" , "c" : "adj." } ) )
. toEqual ( { "i" : 195 , "ts" : 1527822036 , "p" : "اجتماعي" , "f" : "ijtimaa'ee, ijtimaayee" , "g" : "ijtimaaee,ijtimaayee" , "e" : "public, social, societal" , "c" : "adj." } ) ;
} ) ;