@ -5,372 +5,452 @@
* /
* /
package com.todoroo.andlib.utility
package com.todoroo.andlib.utility
import androidx.test.core.app.ApplicationProvider
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.platform.app.InstrumentationRegistry
import kotlinx.coroutines.runBlocking
import org.junit.After
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Assert.assertTrue
import org.junit.Ignore
import org.junit.Ignore
import org.junit.Test
import org.junit.Test
import org.junit.runner.RunWith
import org.junit.runner.RunWith
import org.tasks.SuspendFreeze
import org.tasks.Freeze.Companion.freezeAt
import org.tasks.SuspendFreeze.Companion.freezeAt
import org.tasks.TestUtilities.withLocale
import org.tasks.date.DateTimeUtils
import org.tasks.date.DateTimeUtils
import org.tasks.extensions.Context.is24HourFormat
import org.tasks.extensions.Context.is24HourOverride
import org.tasks.kmp.formatDayOfWeek
import org.tasks.kmp.org.tasks.time.DateStyle
import org.tasks.kmp.org.tasks.time.TextStyle
import org.tasks.kmp.org.tasks.time.getRelativeDateTime
import org.tasks.kmp.org.tasks.time.getRelativeDay
import org.tasks.kmp.org.tasks.time.getTimeString
import org.tasks.time.DateTime
import org.tasks.time.DateTime
import java.util.Locale
import java.time.format.FormatStyle
import java.util.*
@RunWith ( AndroidJUnit4 :: class )
@RunWith ( AndroidJUnit4 :: class )
class DateUtilitiesTest {
class DateUtilitiesTest {
@After
@After
fun after ( ) {
fun after ( ) {
is24HourOverride = null
DateUtilities . is24HourOverride = null
}
}
@Test
@Test
fun testGet24HourTime ( ) {
fun testGet24HourTime ( ) {
is24HourOverride = true
DateUtilities . is24HourOverride = true
assertEquals ( " 09:05 " , getTimeString ( DateTime ( 2014 , 1 , 4 , 9 , 5 , 36 ) . millis , is24HourFormat ) )
assertEquals ( " 09:05 " , DateUtilities . getTimeString ( null , DateTime ( 2014 , 1 , 4 , 9 , 5 , 36 ) ) )
assertEquals ( " 13:00 " , getTimeString ( DateTime ( 2014 , 1 , 4 , 13 , 0 , 1 ) . millis , is24HourFormat ) )
assertEquals ( " 13:00 " , DateUtilities . getTimeString ( null , DateTime ( 2014 , 1 , 4 , 13 , 0 , 1 ) ) )
}
}
@Test
@Test
fun testGetTime ( ) {
fun testGetTime ( ) {
is24HourOverride = false
DateUtilities . is24HourOverride = false
assertEquals ( " 9:05 AM " , getTimeString ( DateTime ( 2014 , 1 , 4 , 9 , 5 , 36 ) . millis , is24HourFormat ) )
assertEquals ( " 9:05 AM " , DateUtilities . getTimeString ( null , DateTime ( 2014 , 1 , 4 , 9 , 5 , 36 ) ) )
assertEquals ( " 1:05 PM " , getTimeString ( DateTime ( 2014 , 1 , 4 , 13 , 5 , 36 ) . millis , is24HourFormat ) )
assertEquals ( " 1:05 PM " , DateUtilities . getTimeString ( null , DateTime ( 2014 , 1 , 4 , 13 , 5 , 36 ) ) )
}
}
@Test
@Test
fun testGetTimeWithNoMinutes ( ) {
fun testGetTimeWithNoMinutes ( ) {
is24HourOverride = false
DateUtilities . is24HourOverride = false
assertEquals ( " 1 PM " , getTimeString ( DateTime ( 2014 , 1 , 4 , 13 , 0 , 59 ) . millis , is24HourFormat ) ) // derp?
assertEquals ( " 1 PM " , DateUtilities . getTimeString ( null , DateTime ( 2014 , 1 , 4 , 13 , 0 , 59 ) ) ) // derp?
}
}
@Test
@Test
fun testGetDateStringWithYear ( ) = runBlocking {
fun testGetDateStringWithYear ( ) {
assertEquals ( " Jan 4, 2014 " , getRelativeDay ( DateTime ( 2014 , 1 , 4 , 0 , 0 , 0 ) . millis ) )
assertEquals ( " Jan 4, 2014 " , DateUtilities . getDateString ( ApplicationProvider . getApplicationContext ( ) , DateTime ( 2014 , 1 , 4 , 0 , 0 , 0 ) ) )
}
}
@Test
@Test
fun testGetDateStringHidingYear ( ) = runBlocking {
fun testGetDateStringHidingYear ( ) {
freezeAt ( DateTimeUtils . newDate ( 2014 , 2 , 1 ) ) {
freezeAt ( DateTimeUtils . newDate ( 2014 , 2 , 1 ) ) {
assertEquals ( " Jan 1 " , getRelativeDay ( DateTime ( 2014 , 1 , 1 ) . millis ) )
assertEquals ( " Jan 1 " , DateUtilities . getDateString ( ApplicationProvider . getApplicationContext ( ) , DateTime ( 2014 , 1 , 1 ) ) )
}
}
}
}
@Test
@Test
fun testGetDateStringWithDifferentYear ( ) = runBlocking {
fun testGetDateStringWithDifferentYear ( ) {
freezeAt ( DateTimeUtils . newDate ( 2013 , 12 , 1 ) ) {
freezeAt ( DateTimeUtils . newDate ( 2013 , 12 , 1 ) ) {
assertEquals ( " Jan 1, 2014 " , getRelativeDay ( DateTime ( 2014 , 1 , 1 , 0 , 0 , 0 ) . millis ) )
assertEquals ( " Jan 1, 2014 " , DateUtilities . getDateString ( ApplicationProvider . getApplicationContext ( ) , DateTime ( 2014 , 1 , 1 , 0 , 0 , 0 ) ) )
}
}
}
}
@Test
@Test
fun testGetWeekdayLongString ( ) = withLocale ( Locale . US ) {
fun testGetWeekdayLongString ( ) {
assertEquals ( " Sunday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2013 , 12 , 29 ) .millis , TextStyle . FULL ) )
assertEquals ( " Sunday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2013 , 12 , 29 ) , Locale . US ) )
assertEquals ( " Monday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2013 , 12 , 30 ) .millis , TextStyle . FULL ) )
assertEquals ( " Monday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2013 , 12 , 30 ) , Locale . US ) )
assertEquals ( " Tuesday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2013 , 12 , 31 ) .millis , TextStyle . FULL ) )
assertEquals ( " Tuesday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2013 , 12 , 31 ) , Locale . US ) )
assertEquals ( " Wednesday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 1 ) .millis , TextStyle . FULL ) )
assertEquals ( " Wednesday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2014 , 1 , 1 ) , Locale . US ) )
assertEquals ( " Thursday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 2 ) .millis , TextStyle . FULL ) )
assertEquals ( " Thursday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2014 , 1 , 2 ) , Locale . US ) )
assertEquals ( " Friday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 3 ) .millis , TextStyle . FULL ) )
assertEquals ( " Friday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2014 , 1 , 3 ) , Locale . US ) )
assertEquals ( " Saturday " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 4 ) .millis , TextStyle . FULL ) )
assertEquals ( " Saturday " , DateUtilities . getWeekday ( DateTimeUtils . newDate ( 2014 , 1 , 4 ) , Locale . US ) )
}
}
@Test
@Test
fun testGetWeekdayShortString ( ) = withLocale ( Locale . US ) {
fun testGetWeekdayShortString ( ) {
assertEquals ( " Sun " , formatDayOfWeek ( DateTimeUtils . newDate ( 2013 , 12 , 29 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Sun " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2013 , 12 , 29 ) , Locale . US ) )
assertEquals ( " Mon " , formatDayOfWeek ( DateTimeUtils . newDate ( 2013 , 12 , 30 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Mon " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2013 , 12 , 30 ) , Locale . US ) )
assertEquals ( " Tue " , formatDayOfWeek ( DateTimeUtils . newDate ( 2013 , 12 , 31 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Tue " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2013 , 12 , 31 ) , Locale . US ) )
assertEquals ( " Wed " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 1 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Wed " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2014 , 1 , 1 ) , Locale . US ) )
assertEquals ( " Thu " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 2 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Thu " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2014 , 1 , 2 ) , Locale . US ) )
assertEquals ( " Fri " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 3 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Fri " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2014 , 1 , 3 ) , Locale . US ) )
assertEquals ( " Sat " , formatDayOfWeek ( DateTimeUtils . newDate ( 2014 , 1 , 4 ) .millis , TextStyle . SHORT ) )
assertEquals ( " Sat " , DateUtilities . getWeekdayShort ( DateTimeUtils . newDate ( 2014 , 1 , 4 ) , Locale . US ) )
}
}
@Test
@Test
fun getRelativeFullDate ( ) = withLocale ( Locale . US ) {
fun getRelativeFullDate ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" Sunday, January 14 " ,
" Sunday, January 14 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . US ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun getRelativeFullDateWithYear ( ) = withLocale ( Locale . US ) {
fun getRelativeFullDateWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" Sunday, January 14, 2018 " ,
" Sunday, January 14, 2018 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . US ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun getRelativeFullDateTime ( ) = withLocale ( Locale . US ) {
fun getRelativeFullDateTime ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertMatches (
assertMatches (
" Sunday, January 14( at)? 1:43 PM " ,
" Sunday, January 14( at)? 1:43 PM " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 43 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 43 , 1 ) . millis ,
Locale . US ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
@Ignore ( " Fails on CI - need to investigate " )
@Ignore ( " Fails on CI - need to investigate " )
fun getRelativeDateTimeWithAlwaysDisplayFullDateOption ( ) = withLocale ( Locale . US ) {
fun getRelativeDateTimeWithAlwaysDisplayFullDateOption ( ) {
freezeAt ( DateTime ( 2020 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2020 , 1 , 1 ) ) {
assertMatches (
assertMatches (
" Thursday, January 2 at 11:50 AM " ,
" Thursday, January 2 at 11:50 AM " ,
getRelativeDateTime ( DateTime ( 2020 , 1 , 2 , 11 , 50 , 1 ) . millis , is24HourFormat , DateStyle . FULL , true , false )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2020 , 1 , 2 , 11 , 50 , 1 ) . millis ,
Locale . US ,
FormatStyle . FULL ,
true ,
false
) )
}
}
}
}
@Test
@Test
fun getRelativeFullDateTimeWithYear ( ) = withLocale ( Locale . US ) {
fun getRelativeFullDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" Sunday, January 14, 2018( at)? 11:50 AM " ,
" Sunday, January 14, 2018( at)? 11:50 AM " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 11 , 50 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 11 , 50 , 1 ) . millis ,
Locale . US ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun getRelativeDayWithAlwaysDisplayFullDateOption ( ) = withLocale ( Locale . US ) {
fun getRelativeDayWithAlwaysDisplayFullDateOption ( ) {
freezeAt ( DateTime ( 2020 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2020 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" Thursday, January 2 " ,
" Thursday, January 2 " ,
getRelativeDay ( DateTime ( 2020 , 1 , 2 , 11 , 50 , 1 ) . millis , DateStyle . FULL , alwaysDisplayFullDate = true , lowercase = true )
DateUtilities . getRelativeDay (
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2020 , 1 , 2 , 11 , 50 , 1 ) . millis ,
Locale . US ,
FormatStyle . FULL ,
true ,
true
)
)
)
}
}
}
}
@Test
@Test
fun getRelativeDayWithoutAlwaysDisplayFullDateOption ( ) = withLocale ( Locale . US ) {
fun getRelativeDayWithoutAlwaysDisplayFullDateOption ( ) {
freezeAt ( DateTime ( 2020 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2020 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" tomorrow " ,
" tomorrow " ,
getRelativeDay ( DateTime ( 2020 , 1 , 2 , 11 , 50 , 1 ) . millis , DateStyle . FULL , lowercase = true )
DateUtilities . getRelativeDay (
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2020 , 1 , 2 , 11 , 50 , 1 ) . millis ,
Locale . US ,
FormatStyle . FULL ,
false ,
true
)
)
)
}
}
}
}
@Test
@Test
fun germanDateNoYear ( ) = withLocale ( Locale . GERMAN ) {
fun germanDateNoYear ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" Sonntag, 14. Januar " ,
" Sonntag, 14. Januar " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . GERMAN ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun germanDateWithYear ( ) = withLocale ( Locale . GERMAN ) {
fun germanDateWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" Sonntag, 14. Januar 2018 " ,
" Sonntag, 14. Januar 2018 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . GERMAN ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun koreanDateNoYear ( ) = withLocale ( Locale . KOREAN ) {
fun koreanDateNoYear ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" 1월 14일 일요일 " ,
" 1월 14일 일요일 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . KOREAN ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun koreanDateWithYear ( ) = withLocale ( Locale . KOREAN ) {
fun koreanDateWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" 2018년 1월 14일 일요일 " ,
" 2018년 1월 14일 일요일 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . KOREAN ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun japaneseDateNoYear ( ) = withLocale ( Locale . JAPANESE ) {
fun japaneseDateNoYear ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" 1月14日日曜日 " ,
" 1月14日日曜日 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . JAPANESE ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun japaneseDateWithYear ( ) = withLocale ( Locale . JAPANESE ) {
fun japaneseDateWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" 2018年1月14日日曜日 " ,
" 2018年1月14日日曜日 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . JAPANESE ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun chineseDateNoYear ( ) = withLocale ( Locale . CHINESE ) {
fun chineseDateNoYear ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" 1月14日星期日 " ,
" 1月14日星期日 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . CHINESE ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun chineseDateWithYear ( ) = withLocale ( Locale . CHINESE ) {
fun chineseDateWithYear ( ) {
SuspendFreeze . freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" 2018年1月14日星期日 " ,
" 2018年1月14日星期日 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 ) . millis ,
Locale . CHINESE ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun chineseDateTimeNoYear ( ) = withLocale ( Locale . CHINESE ) {
fun chineseDateTimeNoYear ( ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
freezeAt ( DateTime ( 2018 , 1 , 1 ) ) {
assertEquals (
assertEquals (
" 1月14日星期日 上午11:53 " ,
" 1月14日星期日 上午11:53 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 11 , 53 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 11 , 53 , 1 ) . millis ,
Locale . CHINESE ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun chineseDateTimeWithYear ( ) = withLocale ( Locale . CHINESE ) {
fun chineseDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" 2018年1月14日星期日 下午1:45 " ,
" 2018年1月14日星期日 下午1:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . CHINESE ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun frenchDateTimeWithYear ( ) = withLocale ( Locale . FRENCH ) {
fun frenchDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" dimanche 14 janvier 2018( à)? 13:45 " ,
" dimanche 14 janvier 2018( à)? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . FRENCH ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun indiaDateTimeWithYear ( ) = withLocale ( Locale . forLanguageTag ( " hi-IN " ) ) {
fun indiaDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" रविवार, 14 जनवरी 2018( को)? 1:45 pm " ,
" रविवार, 14 जनवरी 2018( को)? 1:45 pm " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " hi-IN " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun russiaDateTimeNoYear ( ) = withLocale ( Locale . forLanguageTag ( " ru " ) ) {
fun russiaDateTimeNoYear ( ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" воскресенье, 14 января,? 13:45 " ,
" воскресенье, 14 января,? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " ru " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun russiaDateTimeWithYear ( ) = withLocale ( Locale . forLanguageTag ( " ru " ) ) {
fun russiaDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" воскресенье, 14 января 2018 г .,? 13:45 " ,
" воскресенье, 14 января 2018 г .,? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " ru " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun brazilDateTimeNoYear ( ) = withLocale ( Locale . forLanguageTag ( " pt-br " ) ) {
fun brazilDateTimeNoYear ( ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" domingo, 14 de janeiro 13:45 " ,
" domingo, 14 de janeiro 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " pt-br " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun brazilDateTimeWithYear ( ) = withLocale ( Locale . forLanguageTag ( " pt-br " ) ) {
fun brazilDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertEquals (
assertEquals (
" domingo, 14 de janeiro de 2018 13:45 " ,
" domingo, 14 de janeiro de 2018 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " pt-br " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun spainDateTimeNoYear ( ) = withLocale ( Locale . forLanguageTag ( " es " ) ) {
fun spainDateTimeNoYear ( ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" domingo, 14 de enero,? 13:45 " ,
" domingo, 14 de enero,? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " es " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun spainDateTimeWithYear ( ) = withLocale ( Locale . forLanguageTag ( " es " ) ) {
fun spainDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" domingo, 14 de enero de 2018,? 13:45 " ,
" domingo, 14 de enero de 2018,? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " es " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun hebrewDateTimeNoYear ( ) = withLocale ( Locale . forLanguageTag ( " iw " ) ) {
fun hebrewDateTimeNoYear ( ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2018 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" יום ראשון, 14 בינואר( בשעה)? 13:45 " ,
" יום ראשון, 14 בינואר( בשעה)? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " iw " ) ,
FormatStyle . FULL ) )
}
}
}
}
@Test
@Test
fun hebrewDateTimeWithYear ( ) = withLocale ( Locale . forLanguageTag ( " iw " ) ) {
fun hebrewDateTimeWithYear ( ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
freezeAt ( DateTime ( 2017 , 12 , 12 ) ) {
assertMatches (
assertMatches (
" יום ראשון, 14 בינואר 2018( בשעה)? 13:45 " ,
" יום ראשון, 14 בינואר 2018( בשעה)? 13:45 " ,
getRelativeDateTime ( DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis , is24HourFormat , DateStyle . FULL )
DateUtilities . getRelativeDateTime (
)
ApplicationProvider . getApplicationContext ( ) ,
DateTime ( 2018 , 1 , 14 , 13 , 45 , 1 ) . millis ,
Locale . forLanguageTag ( " iw " ) ,
FormatStyle . FULL ) )
}
}
}
}
private fun assertMatches ( regex : String , actual : String ) =
private fun assertMatches ( regex : String , actual : String ) =
assertTrue ( " expected= $regex \n actual= $actual " , actual . matches ( Regex ( regex ) ) )
assertTrue ( " expected= $regex \n actual= $actual " , actual . matches ( Regex ( regex ) ) )
private val is24HourFormat : Boolean
get ( ) = InstrumentationRegistry . getInstrumentation ( ) . targetContext . is24HourFormat
}
}