aboutsummaryrefslogtreecommitdiff
path: root/shakehand-test
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-06-17 00:14:14 +0800
committer魏曹先生 <1992414357@qq.com>2026-06-17 00:38:17 +0800
commit83d91396bc84a0a35b5b676ab8c2518678a1dd3f (patch)
treec3cca7c0faa6b4750993379ff9d6fee3d866ee82 /shakehand-test
Restructure workspace into subcrates0.1.0
Diffstat (limited to 'shakehand-test')
-rw-r--r--shakehand-test/Cargo.toml7
-rw-r--r--shakehand-test/locale/global.toml59
-rw-r--r--shakehand-test/src/lib.rs105
3 files changed, 171 insertions, 0 deletions
diff --git a/shakehand-test/Cargo.toml b/shakehand-test/Cargo.toml
new file mode 100644
index 0000000..3f20603
--- /dev/null
+++ b/shakehand-test/Cargo.toml
@@ -0,0 +1,7 @@
+[package]
+name = "shakehand_test"
+version = "0.1.0"
+edition = "2024"
+
+[dependencies]
+shakehand.workspace = true
diff --git a/shakehand-test/locale/global.toml b/shakehand-test/locale/global.toml
new file mode 100644
index 0000000..e85227c
--- /dev/null
+++ b/shakehand-test/locale/global.toml
@@ -0,0 +1,59 @@
+[en]
+world = "world"
+greeting = "Hello, %{someone}!"
+farewell = "Goodbye, %{someone}!"
+thanks = "Thank you!"
+
+[zh_CN]
+world = "世界"
+greeting = "你好,%{someone}!"
+farewell = "再见,%{someone}!"
+thanks = "谢谢!"
+
+[ja]
+world = "世界"
+greeting = "こんにちは、%{someone}!"
+farewell = "さようなら、%{someone}!"
+thanks = "ありがとうございます!"
+
+[ko]
+world = "세계"
+greeting = "안녕하세요, %{someone}님!"
+farewell = "안녕히 가세요, %{someone}님!"
+thanks = "감사합니다!"
+
+[fr]
+world = "monde"
+greeting = "Bonjour, %{someone} !"
+farewell = "Au revoir, %{someone} !"
+thanks = "Merci !"
+
+[de]
+world = "Welt"
+greeting = "Hallo, %{someone}!"
+farewell = "Auf Wiedersehen, %{someone}!"
+thanks = "Danke!"
+
+[es]
+world = "mundo"
+greeting = "¡Hola, %{someone}!"
+farewell = "¡Adiós, %{someone}!"
+thanks = "¡Gracias!"
+
+[ru]
+world = "мир"
+greeting = "Привет, %{someone}!"
+farewell = "До свидания, %{someone}!"
+thanks = "Спасибо!"
+
+[ar]
+world = "عالم"
+greeting = "مرحبًا، %{someone}!"
+farewell = "وداعًا، %{someone}!"
+thanks = "شكرًا!"
+
+[pt]
+world = "mundo"
+greeting = "Olá, %{someone}!"
+farewell = "Tchau, %{someone}!"
+thanks = "Obrigado!"
diff --git a/shakehand-test/src/lib.rs b/shakehand-test/src/lib.rs
new file mode 100644
index 0000000..c290533
--- /dev/null
+++ b/shakehand-test/src/lib.rs
@@ -0,0 +1,105 @@
+#[cfg(test)]
+mod test {
+ use crate::locale::{Global, Languages, set_lang};
+
+ #[test]
+ fn test_english() {
+ set_lang(Languages::en);
+ assert_eq!(Global::world(), "world");
+ assert_eq!(Global::greeting("Alice"), "Hello, Alice!");
+ assert_eq!(Global::farewell("Bob"), "Goodbye, Bob!");
+ assert_eq!(Global::thanks(), "Thank you!");
+ }
+
+ #[test]
+ fn test_chinese() {
+ set_lang(Languages::zh_CN);
+ assert_eq!(Global::world(), "世界");
+ assert_eq!(Global::greeting("小明"), "你好,小明!");
+ assert_eq!(Global::farewell("小红"), "再见,小红!");
+ assert_eq!(Global::thanks(), "谢谢!");
+ }
+
+ #[test]
+ fn test_japanese() {
+ set_lang(Languages::ja);
+ assert_eq!(Global::world(), "世界");
+ assert_eq!(Global::greeting("田中"), "こんにちは、田中!");
+ assert_eq!(Global::farewell("佐藤"), "さようなら、佐藤!");
+ assert_eq!(Global::thanks(), "ありがとうございます!");
+ }
+
+ #[test]
+ fn test_korean() {
+ set_lang(Languages::ko);
+ assert_eq!(Global::world(), "세계");
+ assert_eq!(Global::greeting("철수"), "안녕하세요, 철수님!");
+ assert_eq!(Global::farewell("영희"), "안녕히 가세요, 영희님!");
+ assert_eq!(Global::thanks(), "감사합니다!");
+ }
+
+ #[test]
+ fn test_french() {
+ set_lang(Languages::fr);
+ assert_eq!(Global::world(), "monde");
+ assert_eq!(Global::greeting("Marie"), "Bonjour, Marie !");
+ assert_eq!(Global::farewell("Pierre"), "Au revoir, Pierre !");
+ assert_eq!(Global::thanks(), "Merci !");
+ }
+
+ #[test]
+ fn test_german() {
+ set_lang(Languages::de);
+ assert_eq!(Global::world(), "Welt");
+ assert_eq!(Global::greeting("Hans"), "Hallo, Hans!");
+ assert_eq!(Global::farewell("Greta"), "Auf Wiedersehen, Greta!");
+ assert_eq!(Global::thanks(), "Danke!");
+ }
+
+ #[test]
+ fn test_spanish() {
+ set_lang(Languages::es);
+ assert_eq!(Global::world(), "mundo");
+ assert_eq!(Global::greeting("Carlos"), "¡Hola, Carlos!");
+ assert_eq!(Global::farewell("Lucía"), "¡Adiós, Lucía!");
+ assert_eq!(Global::thanks(), "¡Gracias!");
+ }
+
+ #[test]
+ fn test_russian() {
+ set_lang(Languages::ru);
+ assert_eq!(Global::world(), "мир");
+ assert_eq!(Global::greeting("Анна"), "Привет, Анна!");
+ assert_eq!(Global::farewell("Иван"), "До свидания, Иван!");
+ assert_eq!(Global::thanks(), "Спасибо!");
+ }
+
+ #[test]
+ fn test_arabic() {
+ set_lang(Languages::ar);
+ assert_eq!(Global::world(), "عالم");
+ assert_eq!(Global::greeting("أحمد"), "مرحبًا، أحمد!");
+ assert_eq!(Global::farewell("فاطمة"), "وداعًا، فاطمة!");
+ assert_eq!(Global::thanks(), "شكرًا!");
+ }
+
+ #[test]
+ fn test_portuguese() {
+ set_lang(Languages::pt);
+ assert_eq!(Global::world(), "mundo");
+ assert_eq!(Global::greeting("João"), "Olá, João!");
+ assert_eq!(Global::farewell("Maria"), "Tchau, Maria!");
+ assert_eq!(Global::thanks(), "Obrigado!");
+ }
+
+ #[test]
+ fn test_parameterless_translation_as_param() {
+ set_lang(Languages::en);
+ let greeting = Global::greeting(Global::world());
+ assert_eq!(greeting, "Hello, world!");
+ }
+}
+
+mod locale {
+ shakehand::locale!("./locale");
+}