Skip to content
This repository was archived by the owner on May 13, 2021. It is now read-only.

Commit d012c60

Browse files
committed
test i18n es
1 parent 74e4ade commit d012c60

File tree

3 files changed

+216
-33
lines changed

3 files changed

+216
-33
lines changed

src/lang/es.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,10 @@ export const forWord = 'para'
55
export const toWord = 'hasta'
66

77
export const tokens = {
8+
// algorithm : js
89
o: '||',
910
y: '&&',
10-
no: '!',
11-
'<>': '!==',
12-
'<=': '<=',
13-
'>=': '>=',
14-
'<': '<',
15-
'>': '>',
16-
'<-': '='
11+
no: '!'
1712
}
1813

1914
export const variables = [
@@ -117,5 +112,8 @@ export default {
117112
type,
118113
typeError,
119114
error,
120-
code
115+
code,
116+
menu,
117+
addTab,
118+
removeTab
121119
}

src/libs/i18n.js

Lines changed: 54 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,8 @@ import es from '../lang/es'
33
// import language
44
const locale = window.navigator.language.substr(0, 2)
55

6-
const lang = locale === 'es' ?
7-
es :
8-
es
9-
106
export const staticTokens = {
117
// algorithm : js
12-
o: '||',
13-
y: '&&',
14-
no: '!',
158
'<>': '!==',
169
'<=': '<=',
1710
'>=': '>=',
@@ -20,23 +13,54 @@ export const staticTokens = {
2013
'<-': '='
2114
}
2215

23-
// proxy
24-
export const { algorithmWord } = lang
25-
export const { begin } = lang
26-
export const { end } = lang
27-
export const { forWord } = lang
28-
export const { toWord } = lang
29-
export const tokens = Object.assign(staticTokens, lang.tokens)
30-
export const { variables } = lang
31-
export const { transpiler } = lang
32-
export const { openBracket } = lang
33-
export const { closeBracket } = lang
34-
export const { write } = lang
35-
export const { read } = lang
36-
export const { type } = lang
37-
export const { typeError } = lang
38-
export const { error } = lang
39-
export const { code } = lang
16+
// interface
17+
export let algorithmWord
18+
export let begin
19+
export let end
20+
export let forWord
21+
export let toWord
22+
export let tokens
23+
export let variables
24+
export let transpiler
25+
export let openBracket
26+
export let closeBracket
27+
export let write
28+
export let read
29+
export let type
30+
export let typeError
31+
export let error
32+
export let code
33+
export let menu
34+
export let addTab
35+
export let removeTab
36+
37+
export function setLang(langArg) {
38+
const langcode = langArg || locale
39+
40+
let lang = langcode === 'es' ?
41+
es :
42+
es
43+
44+
algorithmWord = lang.algorithmWord
45+
begin = lang.begin
46+
end = lang.end
47+
forWord = lang.forWord
48+
toWord = lang.toWord
49+
tokens = { ...staticTokens, ...lang.tokens }
50+
variables = lang.variables
51+
transpiler = lang.transpiler
52+
openBracket = lang.openBracket
53+
closeBracket = lang.closeBracket
54+
write = lang.write
55+
read = lang.read
56+
type = lang.type
57+
typeError = lang.typeError
58+
error = lang.error
59+
code = lang.code
60+
menu = lang.menu
61+
addTab = lang.addTab
62+
removeTab = lang.removeTab
63+
}
4064

4165
export default {
4266
algorithmWord,
@@ -54,5 +78,10 @@ export default {
5478
type,
5579
typeError,
5680
error,
57-
code
81+
code,
82+
menu,
83+
addTab,
84+
removeTab
5885
}
86+
87+
setLang()

src/libs/i18n.test.js

Lines changed: 156 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,156 @@
1+
import { setLang, algorithmWord, tokens, begin, end, forWord, toWord, variables, transpiler, openBracket, closeBracket, write, read, type, typeError, error, addTab, removeTab, menu, code } from './i18n'
2+
3+
function genericTokens() {
4+
expect(tokens['<>']).toBe('!==')
5+
expect(tokens['<=']).toBe('<=')
6+
expect(tokens['>=']).toBe('>=')
7+
expect(tokens['<']).toBe('<')
8+
expect(tokens['>']).toBe('>')
9+
expect(tokens['<-']).toBe('=')
10+
}
11+
12+
test('ES algorithmWord', () => {
13+
setLang('es')
14+
expect(algorithmWord).toBe('algoritmo')
15+
})
16+
17+
test('ES begin', () => {
18+
setLang('es')
19+
expect(begin).toBe('inicio')
20+
})
21+
22+
test('ES end', () => {
23+
setLang('es')
24+
expect(end).toBe('fin')
25+
})
26+
27+
test('ES forWord', () => {
28+
setLang('es')
29+
expect(forWord).toBe('para')
30+
})
31+
32+
test('ES toWord', () => {
33+
setLang('es')
34+
expect(toWord).toBe('hasta')
35+
})
36+
37+
test('ES tokens', () => {
38+
setLang('es')
39+
genericTokens()
40+
expect(tokens['o']).toBe('||')
41+
expect(tokens['y']).toBe('&&')
42+
expect(tokens['no']).toBe('!')
43+
})
44+
45+
test('ES variables', () => {
46+
setLang('es')
47+
const [varName1, varName2, ...restOfVarName] = variables
48+
expect(restOfVarName.length).toBe(0)
49+
expect(varName1).toBe('variables')
50+
expect(varName2).toBe('var')
51+
})
52+
53+
test('ES transpiler', () => {
54+
setLang('es')
55+
expect(Object.keys(transpiler).length).toBe(7)
56+
expect(transpiler['si']).toBe('if')
57+
expect(transpiler['sino']).toBe('}\nelse {')
58+
expect(transpiler['mientras']).toBe('while')
59+
expect(transpiler['repetir']).toBe('do {')
60+
expect(transpiler['hasta']).toBe('} while')
61+
expect(transpiler['para']).toBe('for')
62+
expect(transpiler['hacer']).toBe('do')
63+
})
64+
65+
test('ES openBracket', () => {
66+
setLang('es')
67+
const [bracket1, bracket2, ...restOfBrackets] = openBracket
68+
expect(restOfBrackets.length).toBe(0)
69+
expect(bracket1).toBe('hacer')
70+
expect(bracket2).toBe('entonces')
71+
})
72+
73+
test('ES closeBracket', () => {
74+
setLang('es')
75+
const [bracket1, bracket2, bracket3, bracket4, bracket5, bracket6, ...restOfBrackets] = closeBracket
76+
expect(restOfBrackets.length).toBe(0)
77+
expect(bracket1).toBe('finsi')
78+
expect(bracket2).toBe('fin_si')
79+
expect(bracket3).toBe('finmientras')
80+
expect(bracket4).toBe('fin_mientras')
81+
expect(bracket5).toBe('finpara')
82+
expect(bracket6).toBe('fin_para')
83+
})
84+
85+
test('ES write', () => {
86+
setLang('es')
87+
const [write1, write2, write3, ...restOfWriteWords] = write
88+
expect(restOfWriteWords.length).toBe(0)
89+
expect(write1).toBe('mostrar')
90+
expect(write2).toBe('escribir')
91+
expect(write3).toBe('imprimir')
92+
})
93+
94+
test('ES read', () => {
95+
setLang('es')
96+
const [read1, ...restOfReadWords] = read
97+
expect(restOfReadWords.length).toBe(0)
98+
expect(read1).toBe('leer')
99+
})
100+
101+
test('ES type', () => {
102+
setLang('es')
103+
expect(Object.keys(type).length).toBe(4)
104+
expect(type['int']).toBe('entero')
105+
expect(type['double']).toBe('real')
106+
expect(type['string']).toBe('carapter')
107+
expect(type['bool']).toBe('booleano')
108+
})
109+
110+
test('ES typeError', () => {
111+
setLang('es')
112+
expect(Object.keys(typeError).length).toBe(4)
113+
expect(typeError['int']).toBe('ERROR: no es entero')
114+
expect(typeError['double']).toBe('ERROR: no es flotante')
115+
expect(typeError['string']).toBe('ERROR: no es una cadena')
116+
expect(typeError['bool']).toBe('ERROR: no es booleano')
117+
})
118+
119+
test('ES error', () => {
120+
setLang('es')
121+
expect(Object.keys(error).length).toBe(2)
122+
expect(error['stringForNumber']).toBe('ERROR: un numero no puede multiplicar a un carapter')
123+
expect(error['infinity']).toBe('ERROR: dividir entre 0 causa un numero infinito')
124+
})
125+
126+
test('ES menu', () => {
127+
setLang('es')
128+
expect(menu).toBe('Menu')
129+
})
130+
131+
test('ES addTab', () => {
132+
setLang('es')
133+
expect(addTab).toBe('Add tab')
134+
})
135+
136+
test('ES removeTab', () => {
137+
setLang('es')
138+
expect(removeTab).toBe('Remove tab')
139+
})
140+
141+
test('ES code', () => {
142+
setLang('es')
143+
expect(code).toBe(`algoritmo facilito
144+
variables
145+
numero, i, tabla[10]: entero
146+
inicio
147+
i <- 0
148+
mostrar "Ingrese numero a multiplicar: "
149+
leer numero
150+
mientras (i < 10) hacer
151+
i <- i + 1
152+
tabla[i] <- numero * i
153+
mostrar numero, " * ", i, " = ", numero * i
154+
finmientras
155+
fin`)
156+
})

0 commit comments

Comments
 (0)