@@ -26,6 +26,14 @@ describe("replaceDefines", () => {
2626 } ) ;
2727 expect ( result ) . toBe ( "(value1) + (value2)" ) ;
2828 } ) ;
29+
30+ test ( "should handle Japanese text with multiple variables" , ( ) => {
31+ const result = replaceDefines ( "${住所} (${人数}人)" , {
32+ 住所 : "東京都渋谷区" ,
33+ 人数 : "5" ,
34+ } ) ;
35+ expect ( result ) . toBe ( "(東京都渋谷区) ((5)人)" ) ;
36+ } ) ;
2937} ) ;
3038
3139describe ( "removeBackslashes" , ( ) => {
@@ -40,6 +48,70 @@ describe("removeBackslashes", () => {
4048 } ) ;
4149} ) ;
4250
51+ describe ( "Expression evaluation" , ( ) => {
52+ test ( "should evaluate Japanese expression with feature properties as string literal" , ( ) => {
53+ const expressionString = '"${住所} (${人数}人)"' ;
54+ const feature = {
55+ properties : {
56+ 住所 : "緑町" ,
57+ 人数 : 2 ,
58+ } ,
59+ } as Feature ;
60+
61+ const expression = new Expression ( expressionString , feature ) ;
62+ const result = expression . evaluate ( ) ;
63+
64+ expect ( result ) . toBe ( "緑町 (2人)" ) ;
65+ } ) ;
66+
67+ test ( "should evaluate Japanese expression with two spaces - user observation" , ( ) => {
68+ const expressionString = '"${住所} (${人数}人)"' ;
69+ const feature = {
70+ properties : {
71+ 住所 : "緑町" ,
72+ 人数 : 2 ,
73+ } ,
74+ } as Feature ;
75+
76+ const expression = new Expression ( expressionString , feature ) ;
77+ const result = expression . evaluate ( ) ;
78+
79+ expect ( result ) . toBe ( "緑町 (2人)" ) ;
80+ } ) ;
81+
82+ test ( "should evaluate expression with multiple variables" , ( ) => {
83+ const expressionString = '"${name}: ${住所} (${人数}人) - ${status}"' ;
84+ const feature = {
85+ properties : {
86+ name : "太郎" ,
87+ 住所 : "緑町" ,
88+ 人数 : 2 ,
89+ status : "完了" ,
90+ } ,
91+ } as Feature ;
92+
93+ const expression = new Expression ( expressionString , feature ) ;
94+ const result = expression . evaluate ( ) ;
95+
96+ expect ( result ) . toBe ( "太郎: 緑町 (2人) - 完了" ) ;
97+ } ) ;
98+
99+ test ( "should evaluate Japanese expression without quotes - shows the issue" , ( ) => {
100+ const expressionString = "${住所} (${人数}人)" ;
101+ const feature = {
102+ properties : {
103+ 住所 : "緑町" ,
104+ 人数 : 2 ,
105+ } ,
106+ } as Feature ;
107+
108+ expect ( ( ) => {
109+ const expression = new Expression ( expressionString , feature ) ;
110+ expression . evaluate ( ) ;
111+ } ) . toThrow ( 'Unexpected function call "czm_住所"' ) ;
112+ } ) ;
113+ } ) ;
114+
43115describe ( "expression caches" , ( ) => {
44116 beforeEach ( ( ) => {
45117 EXPRESSION_CACHES . clear ( ) ;
0 commit comments