new unit test for ApiResponseHelper

- unit test for getDateStringInternal
- StringBuffer replaced with StringBuilder, string concatenation replaced with append

Signed-off-by: Laszlo Hornyak <laszlo.hornyak@gmail.com>
This commit is contained in:
Laszlo Hornyak 2014-03-22 09:22:20 +01:00
parent 2c4ac5e4d3
commit dd225684f4
2 changed files with 89 additions and 24 deletions

View File

@ -3389,45 +3389,40 @@ public class ApiResponseHelper implements ResponseGenerator {
Calendar cal = Calendar.getInstance(tz);
cal.setTime(inputDate);
StringBuffer sb = new StringBuffer();
sb.append(cal.get(Calendar.YEAR) + "-");
StringBuilder sb = new StringBuilder(32);
sb.append(cal.get(Calendar.YEAR)).append('-');
int month = cal.get(Calendar.MONTH) + 1;
if (month < 10) {
sb.append("0" + month + "-");
} else {
sb.append(month + "-");
sb.append('0');
}
sb.append(month).append('-');
int day = cal.get(Calendar.DAY_OF_MONTH);
if (day < 10) {
sb.append("0" + day);
} else {
sb.append("" + day);
sb.append('0');
}
sb.append(day);
sb.append("'T'");
int hour = cal.get(Calendar.HOUR_OF_DAY);
if (hour < 10) {
sb.append("0" + hour + ":");
} else {
sb.append(hour + ":");
sb.append('0');
}
sb.append(hour).append(':');
int minute = cal.get(Calendar.MINUTE);
if (minute < 10) {
sb.append("0" + minute + ":");
} else {
sb.append(minute + ":");
sb.append('0');
}
sb.append(minute).append(':');
int seconds = cal.get(Calendar.SECOND);
if (seconds < 10) {
sb.append("0" + seconds);
} else {
sb.append("" + seconds);
sb.append('0');
}
sb.append(seconds);
double offset = cal.get(Calendar.ZONE_OFFSET);
if (tz.inDaylightTime(inputDate)) {
@ -3443,26 +3438,28 @@ public class ApiResponseHelper implements ResponseGenerator {
if (hourOffset < 0) {
if (hourOffset > -10) {
sb.append("-0" + Math.abs(hourOffset));
sb.append("-0");
} else {
sb.append("-" + Math.abs(hourOffset));
sb.append('-');
}
sb.append(Math.abs(hourOffset));
} else {
if (hourOffset < 10) {
sb.append("+0" + hourOffset);
sb.append("+0");
} else {
sb.append("+" + hourOffset);
sb.append("+");
}
sb.append(hourOffset);
}
sb.append(":");
sb.append(':');
if (minuteOffset == 0) {
sb.append("00");
} else if (minuteOffset < 10) {
sb.append("0" + minuteOffset);
sb.append('0').append(minuteOffset);
} else {
sb.append("" + minuteOffset);
sb.append(minuteOffset);
}
return sb.toString();

View File

@ -0,0 +1,68 @@
// Licensed to the Apache Software Foundation (ASF) under one
// or more contributor license agreements. See the NOTICE file
// distributed with this work for additional information
// regarding copyright ownership. The ASF licenses this file
// to you 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.cloud.api;
import java.lang.reflect.Field;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;
import org.apache.cloudstack.usage.UsageService;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ApiResponseHelperTest {
@Mock
UsageService usageService;
ApiResponseHelper helper;
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss ZZZ");
@Before
public void injectMocks() throws SecurityException, NoSuchFieldException,
IllegalArgumentException, IllegalAccessException {
Field usageSvcField = ApiResponseHelper.class
.getDeclaredField("_usageSvc");
usageSvcField.setAccessible(true);
helper = new ApiResponseHelper();
usageSvcField.set(helper, usageService);
}
@Test
public void getDateStringInternal() throws ParseException {
Mockito.when(usageService.getUsageTimezone()).thenReturn(
TimeZone.getTimeZone("UTC"));
Assert.assertEquals("2014-06-29'T'23:45:00+00:00", helper
.getDateStringInternal(dateFormat.parse("2014-06-29 23:45:00 UTC")));
Assert.assertEquals("2014-06-29'T'23:45:01+00:00", helper
.getDateStringInternal(dateFormat.parse("2014-06-29 23:45:01 UTC")));
Assert.assertEquals("2014-06-29'T'23:45:11+00:00", helper
.getDateStringInternal(dateFormat.parse("2014-06-29 23:45:11 UTC")));
Assert.assertEquals("2014-06-29'T'23:05:11+00:00", helper
.getDateStringInternal(dateFormat.parse("2014-06-29 23:05:11 UTC")));
Assert.assertEquals("2014-05-29'T'08:45:11+00:00", helper
.getDateStringInternal(dateFormat.parse("2014-05-29 08:45:11 UTC")));
}
}