From dd225684f43ec55febaae1b4023eb4075643da64 Mon Sep 17 00:00:00 2001 From: Laszlo Hornyak Date: Sat, 22 Mar 2014 09:22:20 +0100 Subject: [PATCH] new unit test for ApiResponseHelper - unit test for getDateStringInternal - StringBuffer replaced with StringBuilder, string concatenation replaced with append Signed-off-by: Laszlo Hornyak --- .../src/com/cloud/api/ApiResponseHelper.java | 45 ++++++------ .../com/cloud/api/ApiResponseHelperTest.java | 68 +++++++++++++++++++ 2 files changed, 89 insertions(+), 24 deletions(-) create mode 100644 server/test/com/cloud/api/ApiResponseHelperTest.java diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java index 02f77897359..9915ea9a2b7 100755 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -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(); diff --git a/server/test/com/cloud/api/ApiResponseHelperTest.java b/server/test/com/cloud/api/ApiResponseHelperTest.java new file mode 100644 index 00000000000..880332c819e --- /dev/null +++ b/server/test/com/cloud/api/ApiResponseHelperTest.java @@ -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"))); + } +}