I’ve written a companion function which convert an index into a date that is itself an enumeration. When I try and test it out Monday doesn’t get printed out conversely when debugging, the debugger indicates that it has jumped to the line and should print out Monday.
The code that follows contains the companion class.
enum class DayOfTheWeek(val isWeekend: Boolean = false) {
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday(true),
Sunday(true);
fun daysUntil(other: DayOfTheWeek) : Int {
if( this.ordinal < other.ordinal ) { // 1
return other.ordinal - this.ordinal // 2
} else {
return other.ordinal - this.ordinal + DayOfTheWeek.values().count() // 3
}
}
companion object {
fun convertFromInt(index: Int): DayOfTheWeek? {
var count = 0
var currentDay: String = ""
var enumVal : DayOfTheWeek = Monday
if ( index <= 0 ) {
for( day in DayOfTheWeek.values() ) {
if( index == count) {
currentDay = day.name
break
}
count += 1
}
} else {
return null
}
when( currentDay) {
"Monday" -> enumVal = Monday
"Tuesday" -> enumVal = Tuesday
"Wednesday" -> enumVal = Wednesday
"Thursday" -> enumVal = Thursday
"Friday" -> enumVal = Friday
"Saturday" -> enumVal = Saturday
"Sunday" -> enumVal = Sunday
else -> println("I don't recognize the day given")
}
return enumVal
}
fun today(): DayOfTheWeek {
// 1
val calendarDayOfTheWeek = Calendar.getInstance().get(Calendar.DAY_OF_WEEK)
// 2
var adjustedDay = calendarDayOfTheWeek - 2
// 3
val days = DayOfTheWeek.values()
if( adjustedDay < 0) {
adjustedDay += days.count()
}
// 4
val today = days.first { it.ordinal == adjustedDay }
return today
}
}
}
The code that follows goes in main.
val day = 0 when(DayOfTheWeek.convertFromInt(day)) { DayOfTheWeek.Monday -> println("Monday") DayOfTheWeek.Tuesday -> println("Tuesday") DayOfTheWeek.Wednesday -> println("Wednesday") DayOfTheWeek.Thursday -> println("Thursday") DayOfTheWeek.Saturday -> println("Saturday") DayOfTheWeek.Sunday -> println("Sunday") else -> println("I don't recognize day") }