/* * Copyright (c) 2015 Haulmont * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.haulmont.timesheets.global; import com.haulmont.cuba.core.global.AppBeans; import com.haulmont.cuba.core.global.TimeSource; import com.haulmont.cuba.core.global.UserSessionSource; import com.haulmont.cuba.security.global.UserSession; import mockit.Mock; import mockit.MockUp; import mockit.Mocked; import mockit.NonStrictExpectations; import org.junit.Before; import org.junit.Test; import java.math.BigDecimal; import java.util.Calendar; import java.util.Date; import java.util.Locale; import static junit.framework.Assert.assertEquals; /** * @author degtyarjov */ public class HoursAndMinutesTest { @Mocked protected AppBeans appBeans; @Mocked protected TimeSource timeSource; @Mocked protected UserSession userSession; @Mocked protected UserSessionSource userSessionSource; protected TimeParser timeParser = new TimeParser(); @Before public void setUp() throws Exception { timeParser.timeSource = new MockUp<TimeSource>() { @SuppressWarnings("UnusedDeclaration") @Mock Date currentTimestamp() { return new Date(); } }.getMockInstance(); new NonStrictExpectations() { { AppBeans.get(TimeParser.NAME); result = timeParser; AppBeans.get(UserSessionSource.class); result = userSessionSource; userSessionSource.getUserSession(); result = userSession; userSession.getLocale(); result = Locale.ENGLISH; } }; } @Test public void testConstructors() throws Exception { HoursAndMinutes hoursAndMinutes = HoursAndMinutes.fromString("8:11"); assertEquals(8, hoursAndMinutes.getHours()); assertEquals(11, hoursAndMinutes.getMinutes()); hoursAndMinutes = HoursAndMinutes.fromString("99:99"); assertEquals(100, hoursAndMinutes.getHours()); assertEquals(39, hoursAndMinutes.getMinutes()); hoursAndMinutes = HoursAndMinutes.fromBigDecimal(BigDecimal.valueOf(100.5)); assertEquals(100, hoursAndMinutes.getHours()); assertEquals(30, hoursAndMinutes.getMinutes()); hoursAndMinutes = HoursAndMinutes.fromDate(time(18, 19)); assertEquals(18, hoursAndMinutes.getHours()); assertEquals(19, hoursAndMinutes.getMinutes()); } private Date time(int hour, int minute) { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.HOUR_OF_DAY, hour); calendar.set(Calendar.MINUTE, minute); return calendar.getTime(); } @Test public void testModifiers() throws Exception { HoursAndMinutes hoursAndMinutes = HoursAndMinutes.fromString("8:11"); hoursAndMinutes.add("9:59"); assertEquals(18, hoursAndMinutes.getHours()); assertEquals(10, hoursAndMinutes.getMinutes()); hoursAndMinutes = HoursAndMinutes.fromString("1:00"); hoursAndMinutes.add(time(18, 19)); assertEquals(19, hoursAndMinutes.getHours()); assertEquals(19, hoursAndMinutes.getMinutes()); hoursAndMinutes = new HoursAndMinutes(24, 0); hoursAndMinutes.add(new HoursAndMinutes(24, 60)); assertEquals(49, hoursAndMinutes.getHours()); assertEquals(0, hoursAndMinutes.getMinutes()); } }