16f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org/*
26f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*******************************************************************************
36f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
46f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Copyright (C) 2012-2013, International Business Machines
56f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   Corporation and others.  All Rights Reserved.
66f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
76f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*******************************************************************************
86f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   file name:  listformattertest.cpp
96f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   encoding:   US-ASCII
106f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   tab size:   8 (not used)
116f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   indentation:4
126f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*
136f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   created on: 2012aug27
146f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*   created by: Umesh P. Nair
156f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org*/
166f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
176f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#ifndef __LISTFORMATTERTEST_H__
186f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#define __LISTFORMATTERTEST_H__
196f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
206f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "unicode/listformatter.h"
216f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#include "intltest.h"
226f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
236f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.orgclass ListFormatterTest : public IntlTest {
246f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  public:
256f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    ListFormatterTest();
266f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    virtual ~ListFormatterTest() {}
276f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
286f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void runIndexedTest(int32_t index, UBool exec, const char *&name, char *par=0);
296f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
306f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRoot();
316f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestBogus();
326f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestEnglish();
336f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestEnglishUS();
346f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestRussian();
356f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestMalayalam();
366f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestZulu();
376f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void TestOutOfOrderPatterns();
386f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void Test9946();
396f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
406f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  private:
416f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void CheckFormatting(const ListFormatter* formatter, UnicodeString data[], int32_t data_size, const UnicodeString& expected_result);
426f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    void CheckFourCases(
436f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        const char* locale_string,
446f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString one,
456f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString two,
466f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString three,
476f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString four,
486f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString results[4]);
496f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    UBool RecordFourCases(
506f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        const Locale& locale,
516f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString one,
526f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString two,
536f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString three,
546f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString four,
556f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org        UnicodeString results[4]);
566f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
576f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org  private:
586f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    // Reused test data.
596f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const UnicodeString prefix;
606f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const UnicodeString one;
616f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const UnicodeString two;
626f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const UnicodeString three;
636f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org    const UnicodeString four;
646f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org};
656f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org
666f31ac30b9092fd02a8c97e5216cf53f3e4fae4jshin@chromium.org#endif
67