2017-05-27 19:08:47 +02:00
package publicSettings
2017-05-13 22:52:10 +02:00
import (
"path"
"testing"
2017-07-11 21:34:06 +02:00
"github.com/nicksnyder/go-i18n/i18n"
"golang.org/x/text/language"
"golang.org/x/text/language/display"
"fmt"
"strings"
2017-05-17 07:58:40 +02:00
"github.com/NyaaPantsu/nyaa/config"
2017-05-13 22:52:10 +02:00
)
2017-05-31 10:49:01 +02:00
// run before config/parse.go:init()
var _ = func ( ) ( _ struct { } ) {
config . ConfigPath = path . Join ( ".." , ".." , config . ConfigPath )
config . DefaultConfigPath = path . Join ( ".." , ".." , config . DefaultConfigPath )
2017-07-10 14:11:05 +02:00
config . Reload ( )
2017-05-31 10:49:01 +02:00
return
} ( )
2017-05-13 22:52:10 +02:00
func TestInitI18n ( t * testing . T ) {
2017-07-10 14:11:05 +02:00
conf := config . Get ( ) . I18n
2017-05-31 04:21:57 +02:00
conf . Directory = path . Join ( ".." , ".." , conf . Directory )
2017-05-26 12:12:52 +02:00
var retriever UserRetriever // not required during initialization
2017-05-13 22:52:10 +02:00
2017-05-14 21:45:50 +02:00
err := InitI18n ( conf , retriever )
2017-05-13 22:52:10 +02:00
if err != nil {
t . Errorf ( "failed to initialize language translations: %v" , err )
}
}
2017-07-11 21:34:06 +02:00
func TestLanguages ( t * testing . T ) {
conf := config . Get ( ) . I18n
conf . Directory = path . Join ( ".." , ".." , conf . Directory )
var retriever UserRetriever // not required during initialization
err := InitI18n ( conf , retriever )
if err != nil {
t . Errorf ( "failed to initialize language translations: %v" , err )
}
displayLang := language . Make ( conf . DefaultLanguage )
if displayLang . String ( ) == "und" {
t . Errorf ( "Couldn't find the language display for the language %s" , displayLang . String ( ) )
}
n := display . Tags ( displayLang )
tags := i18n . LanguageTags ( )
for _ , languageTag := range tags {
// The matcher will match Swiss German to German.
2017-07-13 00:20:43 +02:00
lang := GetParentTag ( languageTag )
2017-07-11 21:34:06 +02:00
if lang . String ( ) == "und" {
t . Errorf ( "Couldn't find the language root for the language %s" , languageTag )
}
fmt . Printf ( "Name of the language natively: %s\n" , strings . Title ( display . Self . Name ( lang ) ) )
fmt . Printf ( "Name of the language in %s: %s\n" , displayLang . String ( ) , n . Name ( lang ) )
}
}
2017-07-11 23:34:59 +02:00
func TestTranslate ( t * testing . T ) {
conf := config . Get ( ) . I18n
conf . Directory = path . Join ( ".." , ".." , conf . Directory )
var retriever UserRetriever // not required during initialization
err := InitI18n ( conf , retriever )
if err != nil {
t . Errorf ( "failed to initialize language translations: %v" , err )
}
T , _ := GetDefaultTfunc ( )
test := [ ] map [ string ] string {
{
"test" : "" ,
"result" : "" ,
} ,
{
"test" : "fr-fr" ,
"result" : "French (France)" ,
} ,
{
"test" : "fr" ,
"result" : "French" ,
} ,
{
"test" : "fredfef" ,
"result" : "" ,
} ,
}
for _ , langTest := range test {
result := Translate ( langTest [ "test" ] , T ( "language_code" ) )
if result != langTest [ "result" ] {
t . Errorf ( "Result from Translate function different from the expected: have '%s', wants '%s'" , result , langTest [ "result" ] )
}
}
}