YUI Test を使った JavaScript のテスト

最近初めて YUI Test を使って JavaScript をテストした。また Unit テストというものも初めての経験なので何か勘違いしてる部分もあるかもしれないが、一応メモしておく。

まず、URL エンコーディングや Unicode 文字列にエスケープする string converter を作った。UTF-8 の URL エンコードや Unicode のエスケープは JavaScript で行うが、その他の文字コードに対する URL エンコーディングは、サーバサイドのスクリプトで行っている。

YUI Test はユーザのアクションをシミュレートできるので (ボタンのクリックなど)、UI のテストケースも加えてみた。今回やったテストケースがすべてをカバーできてるとは思わないが、自分が YUI Test の使い方を覚えるにはちょうど良かった。また、これを使うとブラウザでのテストが少し楽になるんじゃないかと思う。

  • Demo (String Converter) (デモは削除済み)

“run test suite” というリンクをクリックすると、テストの様子が見れる。サーバサイドのスクリプトが処理する部分については、5 秒ほど待ってからテストしていることに注意。以下がソース。

YUI Test を使った JavaScript のテスト

ToDo List の使い方

最近また ToDo List ツールを更新して、自分が求める最低限の機能はできたので、概要と自分の使い方を書いておく。

機能概要

注意: データはブラウザのローカルストレージに保存されるので、古いブラウザでは使えない。

  • ToDo list ページ
    • ToDo を追加できる (あたりまえ)
    • ドラッグ & ドロップで並べ替えができる
    • 追加した ToDo を編集できる
    • ToDo を削除できる
    • 次の操作をするまでは、削除した ToDo を元に戻す事ができる (Undo)
    • “projectname: ” (プロジェクト名 + コロン + スペース) でプロジェクト名を指定できる(プロジェクト名は英数字かつ英字で開始する必要がある)
    • プロジェクト名を指定しない場合、”General” に分類される
    • プロジェクト名でフィルタできる
  • Report ページ
    • daily または weekly report が見れる
    • レポートは、プロジェクトごとにグルーピングされる
  • Setting ページ
    • これらの操作は Undo できないので注意
    • ToDo データをエクスポートできる
    • ToDo データをインポートできる
      • “remove existing…” を選んだ場合、現在保存されている ToDo を削除した後にデータを読み込む (インポートするデータですべて置き換えられる)
      • “merge the above…” を選んだ場合、ToDo の ID をチェックして、同じ ID の
        ToDo は更新日が新しい方で上書きされる
    • データを削除できる。終了した ToDo だけ、または(ToDo を含めた)すべてのデータを削除できる

使い方

書く程もないくらいシンプル。

  1. ToDo を入力
  2. ドラッグして並べ替え
  3. 終わったら、チェックする

1 日の終わりに daily report で今日完了した ToDo を確認。週の終わりに weekly report で今週完了した ToDo を確認。

ある ToDo が長い間リストに残っているようなら、さらに細かいタスクに分割できないか考える。ある ToDo が 2 行以上にわたって書かれるようなら、分割できないか考える。

ToDo List の使い方

rlToday + MortScript でカスタムスキン

X04HT (Touch Diamond) の Today 画面を Touch FLO から rlTodayMortScript を使ったものに変更したので、その変更内容をメモ。

ベースのスキンとその他の素材

これらを使って、次の画像などを用意した。

  1. Isimple のパンチングメタルの部分を使って背景画像を作成
  2. Deep iPhone Theme から必要なアイコンをコピー
  3. GoSquiared から矢印のアイコンを取得
  4. VGA Diamond Skin からフォントを windows ディレクトリにコピー

そして Skin Developer Resource Kit から control.exe をコピー

Skin.xml と MortScript

2 ページ分のスキンファイルと、スキンを切り替えるための MortScript を作った。

1.xml

<today height="534" refresh="10000">

<Image x="0" y="0" source="wallpaper.png" />
<Image x="57" y="70" source="ora.png" />
<Image x="261" y="70" source="ora.png" />


<!-- Phone -->
<Image x="322" y="19" source="Call.png">
    <OnClick File="\Windows\LaunchMSItem.exe" Command="CALLHISTORY_MISSED" />
</Image>
<Registry key="HKEY_CURRENT_USER\System\State\Phone\Missed Call Count" x="360" y="14" color="RGB(255,255,255)" Alignment="left" unknown="0">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\Windows\LaunchMSItem.exe" Command="CALLHISTORY_MISSED" />
</Registry>

<!-- MMS -->
<Image x="390" y="19" source="sms.png">
    <OnClick File="\windows\ArcMSG.exe" />
</Image>
<Registry key="HKEY_LOCAL_MACHINE\Software\Arcsoft\Arcsoft MMS UA\Config\UI\MMSUnreadCount" x="432" y="14" color="RGB(255,255,255)" Alignment="left" unknown="0">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\windows\ArcMSG.exe" />
</Registry>
<Text x="450" y="14" text="/" color="RGB(250, 250 ,250)" Alignment="Center">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\windows\ArcMSG.exe" />
</Text>
<Registry key="HKEY_LOCAL_MACHINE\Software\Arcsoft\Arcsoft MMS UA\Config\UI\SMSUnreadCount" x="456" y="14" color="RGB(255,255,255)" Alignment="left" unknown="0">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\windows\ArcMSG.exe" />
</Registry> 


<!-- Date -->
<Date x="20" y="14" format="yyyy/MM/dd (ddd)" color="RGB(255, 255, 255)" Alignment="left">
    <Font size="24" weight="normal" font="Tahoma" />
</Date>


<!-- Time -->
<DigitalClock x="138" y="63" format="H" color="RGB(25, 25, 25)" Alignment="Center">  
    <Font size="169" weight="normal" font="Helvetica57-condensed" />
    <OnClick File="\Windows\Calendar.exe" />
</DigitalClock>

<DigitalClock x="346" y="63" format="mm" color="RGB(25, 25, 25)" Alignment="Center">  
    <Font size="169" weight="normal" font="Helvetica57-condensed" />
    <OnClick File="\Windows\Calendar.exe" />
</DigitalClock>

<Image x="57" y="70" source="luce.png" />
<Image x="261" y="70" source="luce.png" />


<!-- Schedule -->
<Image x="60" y="275" source="Alarm.png">
    <OnClick File="\windows\calendar.exe" />
</Image>
<Registry key="HKEY_CURRENT_USER\System\State\Appointments\HomeScreen\Subject" x="98" y="275" color="RGB(81,81,81)" Alignment="Left" unknown="">
    <Font size="20" weight="normal" font="Tahoma" />
    <OnClick File="\windows\calendar.exe" />
</Registry>

<!-- Launcher 1 -->
<!-- Phone \windows\cprog.exe -->
<Application x="48" y="350" appnumber="0" size="60" />
<!-- SoftBankMail \windows\ArcMSG.exe -->
<Application x="129" y="350" appnumber="1" size="60" />
<!-- Camera \windows\camera.exe -->
<Application x="210" y="350" appnumber="2" size="60" />
<!-- Album \windows\HTCAlbum.exe -->
<Application x="291" y="350" appnumber="3" size="60" />
<!-- Google Maps \Program Files\GoogleMaps\GoogleMaps.exe -->
<Application x="372" y="350" appnumber="4" size="60" />

<Image x="442" y="406" source="goforward.png">
    <OnClick File="\Program Files\MortScript\MortScript.exe" Command=''"\Program Files\rlToday\iTouchFlo\mortscript\switchpage.mscr" page=2'' />
</Image>


<!-- Launcher 2 -->
<!-- IrisBrowser -->
<Application x="48" y="440" appnumber="5" size="60" />
<!-- Wasabi -->
<Application x="129" y="440" appnumber="6" size="60" />
<!-- Communication Manager -->
<Application x="210" y="440" appnumber="7" size="60" />
<!-- Active Sync -->
<Application x="291" y="440" appnumber="8" size="60" />
<!-- Quick Mark -->
<Application x="372" y="440" appnumber="9" size="60" />


</today>

2.xml

<today height="534" refresh="10000">

<Image x="0" y="0" source="wallpaper.png" />

<!-- Phone -->
<Image x="322" y="19" source="Call.png">
    <OnClick File="\Windows\LaunchMSItem.exe" Command="CALLHISTORY_MISSED" />
</Image>
<Registry key="HKEY_CURRENT_USER\System\State\Phone\Missed Call Count" x="360" y="14" color="RGB(255,255,255)" Alignment="left" unknown="0">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\Windows\LaunchMSItem.exe" Command="CALLHISTORY_MISSED" />
</Registry>

<!-- MMS -->
<Image x="390" y="19" source="sms.png">
    <OnClick File="\windows\ArcMSG.exe" />
</Image>
<Registry key="HKEY_LOCAL_MACHINE\Software\Arcsoft\Arcsoft MMS UA\Config\UI\MMSUnreadCount" x="432" y="14" color="RGB(255,255,255)" Alignment="left" unknown="0">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\windows\ArcMSG.exe" />
</Registry>
<Text x="450" y="14" text="/" color="RGB(250, 250 ,250)" Alignment="Center">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\windows\ArcMSG.exe" />
</Text>
<Registry key="HKEY_LOCAL_MACHINE\Software\Arcsoft\Arcsoft MMS UA\Config\UI\SMSUnreadCount" x="456" y="14" color="RGB(255,255,255)" Alignment="left" unknown="0">
    <Font size="24" weight="normal" font="Tahoma" />
    <OnClick File="\windows\ArcMSG.exe" />
</Registry> 


<!-- Date -->
<Date x="20" y="14" format="yyyy/MM/dd (ddd)" color="RGB(255, 255, 255)" Alignment="left">
    <Font size="24" weight="normal" font="Tahoma" />
</Date>


<!-- Calendar This Month -->
<CalendarHeader x="40" y="68" format="yyyy/MM" offset="0" color="RGB(81, 81, 81)" Alignment="left">
    <font size="24" weight="normal" font="Tahoma" />
</CalendarHeader>
<Calendar x="40" y="105" rasterx="26" rastery="26" offset="0" color="RGB(255, 255, 255)" saturdaycolor="RGB(192, 213, 244)" sundaycolor="RGB(244, 87, 153)">
    <Font size="20" weight="normal" font="Tahoma" /> 
</Calendar>

<!-- Calendar Next Month -->
<CalendarHeader x="261" y="68" format="yyyy/MM" offset="+1" color="RGB(81, 81, 81)" Alignment="left">
    <font size="24" weight="normal" font="Tahoma" />
</CalendarHeader>
<Calendar x="261" y="105" rasterx="26" rastery="26" offset="+1" color="RGB(255, 255, 255)" saturdaycolor="RGB(192, 213, 244)" sundaycolor="RGB(244, 87, 153)">
    <Font size="20" weight="normal" font="Tahoma" /> 
</Calendar>


<!-- Launcher 1 -->
<!-- Outlook \windows\tmail.exe -->
<Application x="48" y="350" appnumber="10" size="60" />
<!-- Calendar \windows\calendar.exe -->
<Application x="129" y="350" appnumber="11" size="60" />
<Date x="160" y="352" format="dddd" color="RGB(255, 255, 255)" Alignment="center">
    <Font size="10" weight="normal" font="Tahoma" />
</Date>
<Date x="160" y="366" format="d" color="RGB(25, 25, 25)" Alignment="center">
    <Font size="36" weight="bold" font="Helvetica57-condensed" />
</Date>
<!-- Contact \windows\addrbook.lnk -->
<Application x="210" y="350" appnumber="12" size="60" />
<!-- GS Finder -->
<Application x="291" y="350" appnumber="13" size="60" />
<!-- Settings -->
<Application x="372" y="350" appnumber="14" size="60" />


<Image x="0" y="406" source="goback.png">
    <OnClick File="\Program Files\MortScript\MortScript.exe" Command=''"\Program Files\rlToday\iTouchFlo\mortscript\switchpage.mscr" page=1'' />
</Image>


<!-- Launcher 2 -->
<!-- Calculator -->
<Application x="48" y="440" appnumber="15" size="60" />
<!-- RSS4U -->
<Application x="129" y="440" appnumber="16" size="60" />
<!-- Bijin Tokei -->
<Application x="210" y="440" appnumber="17" size="60" />
<!-- q2chwm -->
<Application x="291" y="440" appnumber="18" size="60" />


</today>

switchpage.mscr

# Switch to Page=n
rlTodaySkinDir  = "Program FilesrlTodayiTouchFlo"
rlTodaySkinFile = rlTodaySkinDir  "skin.xml"
rlTodayPage1Xml = rlTodaySkinDir  "pages"  page & ".xml"

Copy(rlTodayPage1Xml, rlTodaySkinFile, 1)

RedrawToday

ディレクトリ構成

Program Files
  +- rlToday
       +- iTouchFlo
            +- icon59x60
            |    +- (copied icons from Deep iPhone Theme)
            +- mortscript
            |    +- switchpage.mscr
            +- pages
            |    +- 1.xml
            |    +- 2.xml
            +- skin.xml (1.xml)
            +- wallpaper.png
            +- goforward.png (right arrow from GoSquared)
            +- goback.png (left arrow from GoSquared)
            +- (other images from VGA Diamond Skin)

その他のソフト

以下のソフトもインストールして使っている。

rlToday + MortScript でカスタムスキン