Skip to content

Commit b27d720

Browse files
committed
Port of TestSimpleDateTimeTextProvider to scalatest
1 parent 7347457 commit b27d720

File tree

5 files changed

+105
-83
lines changed

5 files changed

+105
-83
lines changed

js/src/test/scala/org/threeten/bp/Platform.scala

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,19 @@ package org.threeten.bp
22

33
object Platform {
44
type NPE = scala.scalajs.js.JavaScriptException
5+
6+
/** Returns `true` if and only if the code is executing on a JVM.
7+
* Note: Returns `false` when executing on any JS VM.
8+
*/
9+
final val executingInJVM = true
10+
11+
def setupLocales(): Unit = {
12+
if (Platform.executingInJVM) {
13+
import locales.LocaleRegistry
14+
import locales.cldr.data.pt_BR
15+
16+
LocaleRegistry.installLocale(pt_BR)
17+
}
18+
}
19+
520
}

jvm/src/test/scala/org/threeten/bp/Platform.scala

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,11 @@ package org.threeten.bp
22

33
object Platform {
44
type NPE = NullPointerException
5+
6+
/** Returns `true` if and only if the code is executing on a JVM.
7+
* Note: Returns `false` when executing on any JS VM.
8+
*/
9+
final val executingInJVM = false
10+
11+
def setupLocales(): Unit = ()
512
}

jvm/src/test/scala/org/threeten/bp/format/TestSimpleDateTimeTextProvider.scala

Lines changed: 0 additions & 76 deletions
This file was deleted.

shared/src/test/scala/org/threeten/bp/format/TestDateTimeTextPrinting.scala

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,7 @@ import org.threeten.bp.temporal.ChronoField.{DAY_OF_MONTH, DAY_OF_WEEK, MONTH_OF
3939
import org.threeten.bp.temporal.TemporalField
4040

4141
/** Test text printing. */
42-
class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper with BeforeAndAfter {
43-
private var builder: DateTimeFormatterBuilder = null
44-
45-
before {
46-
builder = new DateTimeFormatterBuilder
47-
}
42+
class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper {
4843

4944
def data_text: List[List[Any]] = {
5045
List(
@@ -90,7 +85,6 @@ class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper with Befor
9085
var dt: LocalDateTime = LocalDateTime.of(2010, 1, 1, 0, 0)
9186
dt = dt.`with`(field, value)
9287
val text: String = f.format(dt)
93-
println(text)
9488
assertEquals(text, expected)
9589
case _ =>
9690
fail()
@@ -114,13 +108,15 @@ class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper with Befor
114108
}
115109

116110
test("print_appendText2arg_french_long") {
111+
val builder = new DateTimeFormatterBuilder
117112
val f: DateTimeFormatter = builder.appendText(MONTH_OF_YEAR, TextStyle.FULL).toFormatter(Locale.FRENCH)
118113
val dt: LocalDateTime = LocalDateTime.of(2010, 1, 1, 0, 0)
119114
val text: String = f.format(dt)
120115
assertEquals(text, "janvier")
121116
}
122117

123118
test("print_appendText2arg_french_short") {
119+
val builder = new DateTimeFormatterBuilder
124120
val f: DateTimeFormatter = builder.appendText(MONTH_OF_YEAR, TextStyle.SHORT).toFormatter(Locale.FRENCH)
125121
val dt: LocalDateTime = LocalDateTime.of(2010, 1, 1, 0, 0)
126122
val text: String = f.format(dt)
@@ -141,6 +137,7 @@ class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper with Befor
141137
map.put(10L, "OBR")
142138
map.put(11L, "NVR")
143139
map.put(12L, "DBR")
140+
val builder = new DateTimeFormatterBuilder
144141
builder.appendText(MONTH_OF_YEAR, map)
145142
val f: DateTimeFormatter = builder.toFormatter
146143
val dt: LocalDateTime = LocalDateTime.of(2010, 1, 1, 0, 0)
@@ -154,6 +151,7 @@ class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper with Befor
154151
map.put(1L, "1st")
155152
map.put(2L, "2nd")
156153
map.put(3L, "3rd")
154+
val builder = new DateTimeFormatterBuilder
157155
builder.appendText(DAY_OF_MONTH, map)
158156
val f: DateTimeFormatter = builder.toFormatter
159157
val dt: LocalDateTime = LocalDateTime.of(2010, 1, 1, 0, 0)
@@ -165,6 +163,7 @@ class TestDateTimeTextPrinting extends FunSuite with AssertionsHelper with Befor
165163
test("appendTextMapIncomplete") {
166164
val map: java.util.Map[Long, String] = new java.util.HashMap[Long, String]
167165
map.put(1L, "JNY")
166+
val builder = new DateTimeFormatterBuilder
168167
builder.appendText(MONTH_OF_YEAR, map)
169168
val f: DateTimeFormatter = builder.toFormatter
170169
val dt: LocalDateTime = LocalDateTime.of(2010, 2, 1, 0, 0)
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
/*
2+
* Copyright (c) 2007-present, Stephen Colebourne & Michael Nascimento Santos
3+
*
4+
* All rights reserved.
5+
*
6+
* Redistribution and use in source and binary forms, with or without
7+
* modification, are permitted provided that the following conditions are met:
8+
*
9+
* * Redistributions of source code must retain the above copyright notice,
10+
* this list of conditions and the following disclaimer.
11+
*
12+
* * Redistributions in binary form must reproduce the above copyright notice,
13+
* this list of conditions and the following disclaimer in the documentation
14+
* and/or other materials provided with the distribution.
15+
*
16+
* * Neither the name of JSR-310 nor the names of its contributors
17+
* may be used to endorse or promote products derived from this software
18+
* without specific prior written permission.
19+
*
20+
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21+
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22+
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23+
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24+
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25+
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26+
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27+
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28+
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29+
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30+
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31+
*/
32+
package org.threeten.bp.format
33+
34+
import java.util.Locale
35+
36+
import org.scalatest.FunSuite
37+
import org.threeten.bp.AssertionsHelper
38+
import org.threeten.bp.Platform
39+
import org.threeten.bp.temporal.ChronoField.{AMPM_OF_DAY, DAY_OF_WEEK, MONTH_OF_YEAR}
40+
import org.threeten.bp.temporal.{ChronoField, TemporalField}
41+
42+
/** Test SimpleDateTimeTextProvider. */
43+
class TestSimpleDateTimeTextProvider extends FunSuite with AssertionsHelper {
44+
private val enUS: Locale = new Locale("en", "US")
45+
private val ptBR: Locale = new Locale("pt", "BR")
46+
private val frFR: Locale = new Locale("fr", "FR")
47+
48+
def data_text: List[List[Any]] =
49+
List[List[Any]](
50+
List(DAY_OF_WEEK, 1, TextStyle.SHORT, enUS, "Mon"), List(DAY_OF_WEEK, 2, TextStyle.SHORT, enUS, "Tue"), List(DAY_OF_WEEK, 3, TextStyle.SHORT, enUS, "Wed"), List(DAY_OF_WEEK, 4, TextStyle.SHORT, enUS, "Thu"), List(DAY_OF_WEEK, 5, TextStyle.SHORT, enUS, "Fri"), List(DAY_OF_WEEK, 6, TextStyle.SHORT, enUS, "Sat"), List(DAY_OF_WEEK, 7, TextStyle.SHORT, enUS, "Sun"),
51+
List(DAY_OF_WEEK, 1, TextStyle.SHORT, ptBR, "Seg"), List(DAY_OF_WEEK, 2, TextStyle.SHORT, ptBR, "Ter"), List(DAY_OF_WEEK, 3, TextStyle.SHORT, ptBR, "Qua"), List(DAY_OF_WEEK, 4, TextStyle.SHORT, ptBR, "Qui"), List(DAY_OF_WEEK, 5, TextStyle.SHORT, ptBR, "Sex"), List(DAY_OF_WEEK, 6, TextStyle.SHORT, ptBR, "S\u00E1b"), List(DAY_OF_WEEK, 7, TextStyle.SHORT, ptBR, "Dom"),
52+
List(DAY_OF_WEEK, 1, TextStyle.FULL, enUS, "Monday"), List(DAY_OF_WEEK, 2, TextStyle.FULL, enUS, "Tuesday"), List(DAY_OF_WEEK, 3, TextStyle.FULL, enUS, "Wednesday"), List(DAY_OF_WEEK, 4, TextStyle.FULL, enUS, "Thursday"), List(DAY_OF_WEEK, 5, TextStyle.FULL, enUS, "Friday"), List(DAY_OF_WEEK, 6, TextStyle.FULL, enUS, "Saturday"), List(DAY_OF_WEEK, 7, TextStyle.FULL, enUS, "Sunday"),
53+
List(DAY_OF_WEEK, 1, TextStyle.FULL, ptBR, "Segunda-feira"), List(DAY_OF_WEEK, 2, TextStyle.FULL, ptBR, "Ter\u00E7a-feira"), List(DAY_OF_WEEK, 3, TextStyle.FULL, ptBR, "Quarta-feira"), List(DAY_OF_WEEK, 4, TextStyle.FULL, ptBR, "Quinta-feira"), List(DAY_OF_WEEK, 5, TextStyle.FULL, ptBR, "Sexta-feira"), List(DAY_OF_WEEK, 6, TextStyle.FULL, ptBR, "S\u00E1bado"), List(DAY_OF_WEEK, 7, TextStyle.FULL, ptBR, "Domingo"),
54+
List(MONTH_OF_YEAR, 1, TextStyle.SHORT, enUS, "Jan"), List(MONTH_OF_YEAR, 2, TextStyle.SHORT, enUS, "Feb"), List(MONTH_OF_YEAR, 3, TextStyle.SHORT, enUS, "Mar"), List(MONTH_OF_YEAR, 4, TextStyle.SHORT, enUS, "Apr"), List(MONTH_OF_YEAR, 5, TextStyle.SHORT, enUS, "May"), List(MONTH_OF_YEAR, 6, TextStyle.SHORT, enUS, "Jun"), List(MONTH_OF_YEAR, 7, TextStyle.SHORT, enUS, "Jul"), List(MONTH_OF_YEAR, 8, TextStyle.SHORT, enUS, "Aug"), List(MONTH_OF_YEAR, 9, TextStyle.SHORT, enUS, "Sep"), List(MONTH_OF_YEAR, 10, TextStyle.SHORT, enUS, "Oct"), List(MONTH_OF_YEAR, 11, TextStyle.SHORT, enUS, "Nov"), List(MONTH_OF_YEAR, 12, TextStyle.SHORT, enUS, "Dec"),
55+
List(MONTH_OF_YEAR, 1, TextStyle.SHORT, frFR, "janv."), List(MONTH_OF_YEAR, 2, TextStyle.SHORT, frFR, "f\u00E9vr."), List(MONTH_OF_YEAR, 3, TextStyle.SHORT, frFR, "mars"), List(MONTH_OF_YEAR, 4, TextStyle.SHORT, frFR, "avr."), List(MONTH_OF_YEAR, 5, TextStyle.SHORT, frFR, "mai"), List(MONTH_OF_YEAR, 6, TextStyle.SHORT, frFR, "juin"), List(MONTH_OF_YEAR, 7, TextStyle.SHORT, frFR, "juil."), List(MONTH_OF_YEAR, 8, TextStyle.SHORT, frFR, "ao\u00FBt"), List(MONTH_OF_YEAR, 9, TextStyle.SHORT, frFR, "sept."), List(MONTH_OF_YEAR, 10, TextStyle.SHORT, frFR, "oct."), List(MONTH_OF_YEAR, 11, TextStyle.SHORT, frFR, "nov."), List(MONTH_OF_YEAR, 12, TextStyle.SHORT, frFR, "d\u00E9c."),
56+
List(MONTH_OF_YEAR, 1, TextStyle.FULL, enUS, "January"), List(MONTH_OF_YEAR, 2, TextStyle.FULL, enUS, "February"), List(MONTH_OF_YEAR, 3, TextStyle.FULL, enUS, "March"), List(MONTH_OF_YEAR, 4, TextStyle.FULL, enUS, "April"), List(MONTH_OF_YEAR, 5, TextStyle.FULL, enUS, "May"), List(MONTH_OF_YEAR, 6, TextStyle.FULL, enUS, "June"), List(MONTH_OF_YEAR, 7, TextStyle.FULL, enUS, "July"), List(MONTH_OF_YEAR, 8, TextStyle.FULL, enUS, "August"), List(MONTH_OF_YEAR, 9, TextStyle.FULL, enUS, "September"), List(MONTH_OF_YEAR, 10, TextStyle.FULL, enUS, "October"), List(MONTH_OF_YEAR, 11, TextStyle.FULL, enUS, "November"), List(MONTH_OF_YEAR, 12, TextStyle.FULL, enUS, "December"),
57+
List(MONTH_OF_YEAR, 1, TextStyle.FULL, ptBR, "Janeiro"), List(MONTH_OF_YEAR, 2, TextStyle.FULL, ptBR, "Fevereiro"), List(MONTH_OF_YEAR, 3, TextStyle.FULL, ptBR, "Mar\u00E7o"), List(MONTH_OF_YEAR, 4, TextStyle.FULL, ptBR, "Abril"), List(MONTH_OF_YEAR, 5, TextStyle.FULL, ptBR, "Maio"), List(MONTH_OF_YEAR, 6, TextStyle.FULL, ptBR, "Junho"), List(MONTH_OF_YEAR, 7, TextStyle.FULL, ptBR, "Julho"), List(MONTH_OF_YEAR, 8, TextStyle.FULL, ptBR, "Agosto"), List(MONTH_OF_YEAR, 9, TextStyle.FULL, ptBR, "Setembro"), List(MONTH_OF_YEAR, 10, TextStyle.FULL, ptBR, "Outubro"), List(MONTH_OF_YEAR, 11, TextStyle.FULL, ptBR, "Novembro"), List(MONTH_OF_YEAR, 12, TextStyle.FULL, ptBR, "Dezembro"),
58+
List(AMPM_OF_DAY, 0, TextStyle.SHORT, enUS, "AM"), List(AMPM_OF_DAY, 1, TextStyle.SHORT, enUS, "PM"))
59+
60+
test("getText") {
61+
data_text.foreach {
62+
case (field: TemporalField) :: (value: Number) :: (style: TextStyle) :: (locale: Locale) :: (expected: String) :: Nil =>
63+
Platform.setupLocales()
64+
val tp: DateTimeTextProvider = DateTimeTextProvider.getInstance
65+
66+
// Work around difference between JRE locale data and CLDR data:
67+
// JRE specifies capitalized brazilian month and day-of-week names,
68+
// while CLDR specifies lower-cased names.
69+
if (locale == ptBR && (field == ChronoField.MONTH_OF_YEAR || field == ChronoField.DAY_OF_WEEK))
70+
assertEquals(tp.getText(field, value.longValue, style, locale).capitalize, expected)
71+
else
72+
assertEquals(tp.getText(field, value.longValue, style, locale), expected)
73+
case _ =>
74+
fail()
75+
}
76+
}
77+
}

0 commit comments

Comments
 (0)