Skip to content

Commit

Permalink
use junit for testing translations
Browse files Browse the repository at this point in the history
  • Loading branch information
Fallen-Breath committed Nov 24, 2021
1 parent ead1a34 commit 8a6e32e
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 3 deletions.
6 changes: 5 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,19 @@ group = project.maven_group


dependencies {
//to change the versions see the gradle.properties file
// loom
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

// mods
modImplementation "carpet:fabric-carpet:${project.carpet_core_version}"
modCompileOnly "curse.maven:lithium-360438:2904300"

// libraries
implementation "org.yaml:snakeyaml:${project.snakeyaml_version}"
include "org.yaml:snakeyaml:${project.snakeyaml_version}"
testImplementation "junit:junit:${project.junit_version}"
}

loom {
Expand Down
2 changes: 2 additions & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -18,3 +18,5 @@ org.gradle.jvmargs=-Xmx1G
# Dependencies
# https://mvnrepository.com/artifact/org.yaml/snakeyaml
snakeyaml_version = 1.29
# https://mvnrepository.com/artifact/junit/junit
junit_version = 4.13.2
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import net.minecraft.text.*;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.annotations.VisibleForTesting;
import org.yaml.snakeyaml.Yaml;

import java.io.IOException;
Expand All @@ -26,7 +27,9 @@ public class TISAdditionTranslations
public static final String TRANSLATION_NAMESPACE = CarpetTISAdditionServer.compactName; // "carpettisaddition"
public static final String TRANSLATION_KEY_PREFIX = TRANSLATION_NAMESPACE + "."; // "carpettisaddition."
private static final String RESOURCE_DIR = String.format("assets/%s/lang", TRANSLATION_NAMESPACE);
private static final Map<String, Map<String, String>> translationStorage = Maps.newLinkedHashMap();

@VisibleForTesting
public static final Map<String, Map<String, String>> translationStorage = Maps.newLinkedHashMap();

@NotNull
public static Map<String, String> getTranslationFromResourcePath(String lang)
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/assets/carpettisaddition/lang/zh_cn.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ carpettisaddition:
bad_omen_level_increased: '袭击(id: %1$s)不祥之兆等级提升为%2$s'
center_moved: '袭击(id: %1$s)的中心点移动至%2$s'
microTiming:
merged_message: 已合并额外%1$s条相同的信息
gametime: 游戏刻
merged_message: 已合并额外%1$s条相同的信息
common:
color: 颜色
indentation: 缩进层数
Expand Down
51 changes: 51 additions & 0 deletions src/test/java/carpettisaddition/tests/TranslationTest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package carpettisaddition.tests;

import carpettisaddition.translations.TISAdditionTranslations;
import com.google.common.collect.Maps;
import junit.framework.TestCase;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class TranslationTest extends TestCase
{
private static final String CM_TRANSLATION_PREFIX = "carpettisaddition.carpet_extension";

public void testTranslationConsistency()
{
TISAdditionTranslations.loadTranslations();
Map<String, List<String>> translationKeys = Maps.newLinkedHashMap();
TISAdditionTranslations.translationStorage.forEach((lang, translations) -> translationKeys.put(
lang, translations.keySet().stream().
filter(key -> !key.startsWith(CM_TRANSLATION_PREFIX)).
collect(Collectors.toList())
));
if (translationKeys.size() >= 1)
{
String stdLang = translationKeys.keySet().iterator().next();
List<String> stdKeys = translationKeys.get(stdLang);
int stdSize = stdKeys.size();

// translation size
for (Map.Entry<String, List<String>> entry : translationKeys.entrySet())
{
String testLang = entry.getKey();
int testSize = entry.getValue().size();
assertEquals(String.format("STD language %s has size %d, but language %s has size %d", stdLang, stdSize, testLang, testSize), stdSize, testSize);
}

// translation key order
for (int i = 0; i < stdKeys.size(); i++)
{
String stdKey = stdKeys.get(i);
for (Map.Entry<String, List<String>> entry : translationKeys.entrySet())
{
String testLang = entry.getKey();
String testKey = entry.getValue().get(i);
assertEquals(String.format("Key #%d, excepted %s in %s, found %s in %s\n", i, stdKey, stdLang, testKey, testLang), stdKey, testKey);
}
}
}
}
}

0 comments on commit 8a6e32e

Please sign in to comment.