57 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
58 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59 */
60
61 /*
62 * @test
63 * @modules jdk.localedata
64 */
65 package test.java.time.format;
66
67 import java.time.chrono.ChronoLocalDate;
68 import java.time.chrono.Chronology;
69 import java.time.chrono.IsoChronology;
70 import java.time.chrono.JapaneseChronology;
71 import java.time.chrono.JapaneseEra;
72 import java.time.chrono.MinguoChronology;
73 import java.time.chrono.ThaiBuddhistChronology;
74 import java.time.format.DateTimeFormatter;
75 import java.time.format.DateTimeFormatterBuilder;
76 import java.time.format.FormatStyle;
77 import java.time.LocalDate;
78 import java.time.temporal.ChronoField;
79 import java.time.temporal.Temporal;
80
81 import java.util.HashMap;
82 import java.util.Locale;
83 import java.util.Map;
84
85 import static org.testng.Assert.assertEquals;
86
87 import org.testng.annotations.BeforeMethod;
88 import org.testng.annotations.DataProvider;
89 import org.testng.annotations.Test;
90
91 /**
92 * Test DateTimeFormatterBuilder.
93 */
94 @Test
95 public class TestDateTimeFormatterBuilderWithLocale {
96
117 public void test_appendPattern_patternPrint(String input, Temporal temporal, String expected) throws Exception {
118 DateTimeFormatter f = builder.appendPattern(input).toFormatter(Locale.UK);
119 String test = f.format(temporal);
120 assertEquals(test, expected);
121 }
122
123 //-----------------------------------------------------------------------
124 @DataProvider(name="mapTextLookup")
125 Object[][] data_mapTextLookup() {
126 return new Object[][] {
127 {IsoChronology.INSTANCE.date(1, 1, 1), Locale.ENGLISH},
128 {JapaneseChronology.INSTANCE.date(JapaneseEra.HEISEI, 1, 1, 8), Locale.ENGLISH},
129 {MinguoChronology.INSTANCE.date(1, 1, 1), Locale.ENGLISH},
130 {ThaiBuddhistChronology.INSTANCE.date(1, 1, 1), Locale.ENGLISH},
131 };
132 }
133
134 @Test(dataProvider="mapTextLookup")
135 public void test_appendText_mapTextLookup(ChronoLocalDate date, Locale locale) {
136 final String new1st = "1st";
137 Map<Long, String> yearMap = new HashMap<>();
138 yearMap.put(1L, new1st);
139 builder.appendText(ChronoField.YEAR_OF_ERA, yearMap);
140
141 String actual = date.format(builder.toFormatter(locale));
142 assertEquals(actual, new1st);
143 }
144
145
146 //-----------------------------------------------------------------------
147 @DataProvider(name="localePatterns")
148 Object[][] localizedDateTimePatterns() {
149 return new Object[][] {
150 // French Locale and ISO Chronology
151 {FormatStyle.FULL, FormatStyle.FULL, IsoChronology.INSTANCE, Locale.FRENCH, "EEEE d MMMM y '\u00e0' HH:mm:ss zzzz"},
152 {FormatStyle.LONG, FormatStyle.LONG, IsoChronology.INSTANCE, Locale.FRENCH, "d MMMM y '\u00e0' HH:mm:ss z"},
153 {FormatStyle.MEDIUM, FormatStyle.MEDIUM, IsoChronology.INSTANCE, Locale.FRENCH, "d MMM y '\u00e0' HH:mm:ss"},
154 {FormatStyle.SHORT, FormatStyle.SHORT, IsoChronology.INSTANCE, Locale.FRENCH, "dd/MM/y HH:mm"},
155 {FormatStyle.FULL, null, IsoChronology.INSTANCE, Locale.FRENCH, "EEEE d MMMM y"},
156 {FormatStyle.LONG, null, IsoChronology.INSTANCE, Locale.FRENCH, "d MMMM y"},
157 {FormatStyle.MEDIUM, null, IsoChronology.INSTANCE, Locale.FRENCH, "d MMM y"},
158 {FormatStyle.SHORT, null, IsoChronology.INSTANCE, Locale.FRENCH, "dd/MM/y"},
159 {null, FormatStyle.FULL, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm:ss zzzz"},
160 {null, FormatStyle.LONG, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm:ss z"},
161 {null, FormatStyle.MEDIUM, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm:ss"},
162 {null, FormatStyle.SHORT, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm"},
|
57 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
58 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
59 */
60
61 /*
62 * @test
63 * @modules jdk.localedata
64 */
65 package test.java.time.format;
66
67 import java.time.chrono.ChronoLocalDate;
68 import java.time.chrono.Chronology;
69 import java.time.chrono.IsoChronology;
70 import java.time.chrono.JapaneseChronology;
71 import java.time.chrono.JapaneseEra;
72 import java.time.chrono.MinguoChronology;
73 import java.time.chrono.ThaiBuddhistChronology;
74 import java.time.format.DateTimeFormatter;
75 import java.time.format.DateTimeFormatterBuilder;
76 import java.time.format.FormatStyle;
77 import java.time.format.ResolverStyle;
78 import java.time.LocalDate;
79 import java.time.temporal.ChronoField;
80 import java.time.temporal.Temporal;
81
82 import java.util.HashMap;
83 import java.util.Locale;
84 import java.util.Map;
85
86 import static org.testng.Assert.assertEquals;
87
88 import org.testng.annotations.BeforeMethod;
89 import org.testng.annotations.DataProvider;
90 import org.testng.annotations.Test;
91
92 /**
93 * Test DateTimeFormatterBuilder.
94 */
95 @Test
96 public class TestDateTimeFormatterBuilderWithLocale {
97
118 public void test_appendPattern_patternPrint(String input, Temporal temporal, String expected) throws Exception {
119 DateTimeFormatter f = builder.appendPattern(input).toFormatter(Locale.UK);
120 String test = f.format(temporal);
121 assertEquals(test, expected);
122 }
123
124 //-----------------------------------------------------------------------
125 @DataProvider(name="mapTextLookup")
126 Object[][] data_mapTextLookup() {
127 return new Object[][] {
128 {IsoChronology.INSTANCE.date(1, 1, 1), Locale.ENGLISH},
129 {JapaneseChronology.INSTANCE.date(JapaneseEra.HEISEI, 1, 1, 8), Locale.ENGLISH},
130 {MinguoChronology.INSTANCE.date(1, 1, 1), Locale.ENGLISH},
131 {ThaiBuddhistChronology.INSTANCE.date(1, 1, 1), Locale.ENGLISH},
132 };
133 }
134
135 @Test(dataProvider="mapTextLookup")
136 public void test_appendText_mapTextLookup(ChronoLocalDate date, Locale locale) {
137 final String new1st = "1st";
138 final long firstYear = 1L;
139 Map<Long, String> yearMap = new HashMap<>();
140 yearMap.put(firstYear, new1st);
141 builder.appendText(ChronoField.YEAR_OF_ERA, yearMap);
142 DateTimeFormatter formatter = builder
143 .toFormatter(locale)
144 .withResolverStyle(ResolverStyle.STRICT);
145
146 assertEquals(date.format(formatter), new1st);
147 assertEquals(formatter.parse(new1st).getLong(ChronoField.YEAR_OF_ERA), firstYear);
148 }
149
150
151 //-----------------------------------------------------------------------
152 @DataProvider(name="localePatterns")
153 Object[][] localizedDateTimePatterns() {
154 return new Object[][] {
155 // French Locale and ISO Chronology
156 {FormatStyle.FULL, FormatStyle.FULL, IsoChronology.INSTANCE, Locale.FRENCH, "EEEE d MMMM y '\u00e0' HH:mm:ss zzzz"},
157 {FormatStyle.LONG, FormatStyle.LONG, IsoChronology.INSTANCE, Locale.FRENCH, "d MMMM y '\u00e0' HH:mm:ss z"},
158 {FormatStyle.MEDIUM, FormatStyle.MEDIUM, IsoChronology.INSTANCE, Locale.FRENCH, "d MMM y '\u00e0' HH:mm:ss"},
159 {FormatStyle.SHORT, FormatStyle.SHORT, IsoChronology.INSTANCE, Locale.FRENCH, "dd/MM/y HH:mm"},
160 {FormatStyle.FULL, null, IsoChronology.INSTANCE, Locale.FRENCH, "EEEE d MMMM y"},
161 {FormatStyle.LONG, null, IsoChronology.INSTANCE, Locale.FRENCH, "d MMMM y"},
162 {FormatStyle.MEDIUM, null, IsoChronology.INSTANCE, Locale.FRENCH, "d MMM y"},
163 {FormatStyle.SHORT, null, IsoChronology.INSTANCE, Locale.FRENCH, "dd/MM/y"},
164 {null, FormatStyle.FULL, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm:ss zzzz"},
165 {null, FormatStyle.LONG, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm:ss z"},
166 {null, FormatStyle.MEDIUM, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm:ss"},
167 {null, FormatStyle.SHORT, IsoChronology.INSTANCE, Locale.FRENCH, "HH:mm"},
|