Changeset 15374

Show
Ignore:
Timestamp:
07/07/08 17:20:58 (5 years ago)
Author:
nowelium
Message:
 
Location:
lang/io/MessageResource
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/io/MessageResource/io/MessageResource.io

    r15164 r15374  
    11MessageResource := Object clone do ( 
     2    lang ::= nil 
     3    locale ::= nil 
     4    encoding ::= "UTF8" 
     5 
    26    init := method( 
    37        replace := Map clone 
    48        replace atPut("-", "") 
    59 
    6         self lang := System getEnvironmentVariable("LANG") 
     10        self setLang(System getEnvironmentVariable("LANG")) 
    711        split := lang splitNoEmpties(".") 
    8         self locale := split at(0) 
    9         self encoding := split at(1) 
    10         self encodeName := self encoding replaceMap(replace) 
     12 
     13        self setLocale(split at(0)) 
     14        self setEncoding(split at(1) uppercase) 
     15        self encodeName := encoding replaceMap(replace) 
    1116        self encodingMessage := ("as" .. encoding) asMessage 
    1217    ) 
     18    __getLocaleMessage := method(locale, id, 
     19        resourceLocale := self getSlot(locale) 
     20        if(resourceLocale isNil) then ( 
     21            resourceLocale = self getSlot("C") 
     22        ) 
     23        if(resourceLocale isNil) then ( 
     24            Exception raise("locale not found locale: " .. locale) 
     25        ) 
     26        message := resourceLocale getSlot(id) 
     27        if(message isNil) then ( 
     28            Exception raise("message not found id: " .. id) 
     29        ) 
     30        message 
     31    ) 
    1332    getMessage := method(messageId, params, 
    14         message := self getSlot(locale) getSlot(messageId) 
    15         message interpolateInPlace(params) 
     33        message := __getLocaleMessage(locale, messageId) 
     34        message asMutable doMessage(encodingMessage) interpolateInPlace(params) 
    1635    ) 
    1736    curlyBrackets := method( 
     
    2544    forward := method( 
    2645        name := call message name 
    27         message := self getSlot(locale) getSlot(name) 
     46        message := __getLocaleMessage(locale, name) 
    2847        message container := self 
    2948        message encodingMessage := self encodingMessage 
     
    3453        message 
    3554    ) 
     55 
     56    UnitTest := Object clone do ( 
     57        on := method( 
     58            target := call sender 
     59            target messageResource := MessageResource clone 
     60            target getArgs := method(a, b, msg, 
     61                messageResource := self messageResource 
     62                args := list() 
     63                if(a isNil not) then ( 
     64                    if(a encoding != messageResource encoding) then ( 
     65                        a = a doMessage(messageResource encodingMessage) 
     66                    ) 
     67                ) 
     68                if(b isNil not) then( 
     69                    if(b encoding != messageResource encoding) then ( 
     70                        b = b doMessage(messageResource encodingMessage) 
     71                    ) 
     72                ) 
     73                args append(a, b, msg) 
     74                args 
     75            ) 
     76            target __assert := method(name, args, UnitTest performWithArgList(name, args)) 
     77            target assertEquals = method(a, b, msg, 
     78                __assert(call message name, getArgs(a, b, msg)) 
     79            ) 
     80            target assertNotEquals = method(a, b, msg, 
     81                __assert(call message name, getArgs(a, b, msg)) 
     82            ) 
     83        ) 
     84    ) 
    3685) 
  • lang/io/MessageResource/tests/MessageResourceTest.io

    r15164 r15374  
    11MessageResourceTest := UnitTest clone do( 
    22    type := "MessageResourceTest" 
    3     init := method( 
    4     ) 
    53    setUp := method( 
    64    ) 
    75    tearDown := method( 
    86    ) 
     7    testMessage := method( 
     8        serverStart := HogeMessage SERVER_START {name := "hoge"} 
     9        assertEquals(serverStart, "サーバ hoge が始動しました") 
     10        assertNotEquals(serverStart, "サーバ #{name} が始動しました") 
     11        assertNotEquals(serverStart, "サーバ aaaa が始動しました") 
     12    ) 
    913    testGetMessage := method( 
    10         serverStart := HogeMessage SERVER_START {name := "hoge"} 
    11         assertEquals(serverStart, "サーバ hoge が始動しました" asUTF8) 
     14        params := Object clone do( 
     15            name := "foo" 
     16        ) 
     17        serverStop := HogeMessage getMessage("SERVER_STOP", params) 
     18        assertEquals(serverStop, "サーバ foo が停止しました") 
     19    ) 
     20    testLocaleMessage := method( 
     21        serverStart := FooMessage SERVER_START {name := "hoge"} 
     22        assertEquals(serverStart, "server hoge has started") 
     23        assertNotEquals(serverStart, "サーバ hoge が始動しました") 
     24    ) 
     25    testMessageNotFound := method( 
     26        assertRaisesException(HogeMessage hello) 
     27        assertRaisesException(HogeMessage getMessage("world", nil)) 
     28    ) 
     29    testNilMessageParams := method( 
     30        assertRaisesException(HogeMessage SERVER_START {nil}) 
     31        assertRaisesException(HogeMessage getMessage(SERVER_START, nil)) 
     32        e := try ( 
     33            assertNotNil(HogeMessage NONE_MSG) 
     34            assertEquals(HogeMessage NONE_MSG, "ほげ") 
     35        ); e catch(Exception, 
     36            fail("パラメータが無いので、メッセージのままでOK") 
     37        ) 
     38        e1 := try ( 
     39            assertNotNil(HogeMessage getMessage("NONE_MSG")) 
     40            assertEquals(HogeMessage getMessage("NONE_MSG"), "ほげ") 
     41        ); e1 catch(Exception, 
     42            fail("パラメータが無いので、メッセージのままでOK") 
     43        ) 
     44    ) 
     45    testUnknownLocale := method( 
     46        serverStart := BarMessage SERVER_START {name := "hoge"} 
     47        assertEquals(serverStart, "server hoge has started") 
     48        assertNotEquals(serverStart, "サーバ hoge が始動しました") 
    1249    ) 
    1350 
    14     HogeMessage := MessageResource clone do( 
     51    HogeMessage := MessageResource clone do ( 
    1552        ja_JP := { 
    1653            SERVER_START := "サーバ #{name} が始動しました", 
    17             SERVER_STOP := "サーバ #{name} が停止しました" 
     54            SERVER_STOP := "サーバ #{name} が停止しました", 
     55            NONE_MSG := "ほげ" 
    1856        } 
     57    ) 
     58    FooMessage := MessageResource clone do ( 
     59        locale := "C" 
    1960        C := { 
    2061            SERVER_START := "server #{name} has started", 
     
    2263        } 
    2364    ) 
     65    BarMessage := FooMessage clone do ( 
     66        locale := "bar" 
     67    ) 
     68    MessageResource UnitTest on 
    2469)