| // Copyright 2007, 2008 The Apache Software Foundation |
| // |
| // 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 org.apache.tapestry5.ioc.util; |
| |
| import org.apache.tapestry5.ioc.test.TestBase; |
| import org.testng.annotations.DataProvider; |
| import org.testng.annotations.Test; |
| |
| public class TimeIntervalTest extends TestBase |
| { |
| @Test |
| public void use_constructor() |
| { |
| TimeInterval p = new TimeInterval("30 s"); |
| |
| assertEquals(p.seconds(), 30); |
| assertEquals(p.milliseconds(), 30 * 1000); |
| |
| assertEquals(p.toString(), "TimeInterval[30000 ms]"); |
| } |
| |
| @Test |
| public void invalid_units() |
| { |
| try |
| { |
| TimeInterval.parseMilliseconds("30s 500mz"); |
| unreachable(); |
| } |
| catch (RuntimeException ex) |
| { |
| assertEquals(ex.getMessage(), |
| "Unknown time interval unit 'mz' (in '30s 500mz'). Defined units: d, h, m, ms, s, y."); |
| } |
| } |
| |
| @Test |
| public void unrecognized_input() |
| { |
| try |
| { |
| TimeInterval.parseMilliseconds("30s z 500ms"); |
| unreachable(); |
| } |
| catch (RuntimeException ex) |
| { |
| assertEquals(ex.getMessage(), "Unexpected string 'z' (in time interval '30s z 500ms')."); |
| } |
| } |
| |
| @Test |
| public void unrecognized_input_at_end() |
| { |
| try |
| { |
| TimeInterval.parseMilliseconds("30s 500ms xyz"); |
| unreachable(); |
| } |
| catch (RuntimeException ex) |
| { |
| assertEquals(ex.getMessage(), "Unexpected string 'xyz' (in time interval '30s 500ms xyz')."); |
| } |
| } |
| |
| @Test(dataProvider = "mix_of_units_data") |
| public void mix_of_units(String input, long expected) |
| { |
| assertEquals(TimeInterval.parseMilliseconds(input), expected); |
| } |
| |
| @DataProvider(name = "mix_of_units_data") |
| public Object[][] mix_of_units_data() |
| { |
| return new Object[][] { { "54321", 54321 }, |
| |
| { "30s", 30 * 1000 }, |
| |
| { "1h 30m", 90 * 60 * 1000 }, |
| |
| { "2d", 2 * 24 * 60 * 60 * 1000 }, |
| |
| { "2m", 2 * 60 * 1000 }, |
| |
| { "23ms", 23 } |
| |
| }; |
| } |
| } |