⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 absolutetimedateformattestcase.cpp

📁 log4cxx 0.10 unix下编译包
💻 CPP
字号:
/* * 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. */#include "../logunit.h" #include <log4cxx/logstring.h>#include <log4cxx/helpers/absolutetimedateformat.h>#include "../insertwide.h"#include <apr.h>#include <apr_time.h>#include <log4cxx/helpers/pool.h>//Define INT64_C for compilers that don't have it#if (!defined(INT64_C))#define INT64_C(value)  value ## LL#endifusing namespace log4cxx;using namespace log4cxx::helpers;/**   Unit test {@link AbsoluteTimeDateFormat}.      */LOGUNIT_CLASS(AbsoluteTimeDateFormatTestCase) {  LOGUNIT_TEST_SUITE(AbsoluteTimeDateFormatTestCase);          LOGUNIT_TEST(test1);          LOGUNIT_TEST(test2);          LOGUNIT_TEST(test3);          LOGUNIT_TEST(test4);          LOGUNIT_TEST(test5);          LOGUNIT_TEST(test6);          LOGUNIT_TEST(test7);          LOGUNIT_TEST(test8);  LOGUNIT_TEST_SUITE_END();  public:  /**   * Asserts that formatting the provided date results   * in the expected string.   *   * @param date Date date   * @param timeZone TimeZone timezone for conversion   * @param expected String expected string   */  private:  void assertFormattedTime(apr_time_t date,                           const TimeZonePtr& timeZone,                           const LogString& expected) {    AbsoluteTimeDateFormat formatter;    formatter.setTimeZone(timeZone);    LogString actual;    Pool p;    formatter.format(actual, date, p);    LOGUNIT_ASSERT_EQUAL(expected, actual);  }#define MICROSECONDS_PER_DAY APR_INT64_C(86400000000)  public:  /**   * Convert 02 Jan 2004 00:00:00 GMT for GMT.   */  void test1() {    //    //   02 Jan 2004 00:00 GMT    //    apr_time_t jan2 = MICROSECONDS_PER_DAY * 12419;    assertFormattedTime(jan2, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,000"));  }  /**   * Convert 03 Jan 2004 00:00:00 GMT for America/Chicago.   */  void test2() {    //    //   03 Jan 2004 00:00 GMT    //       (asking for the same time at a different timezone    //          will ignore the change of timezone)    apr_time_t jan2 = MICROSECONDS_PER_DAY * 12420;    assertFormattedTime(jan2, TimeZone::getTimeZone(LOG4CXX_STR("GMT-6")), LOG4CXX_STR("18:00:00,000"));  }  /**   * Convert 29 Jun 2004 00:00:00 GMT for GMT.   */  void test3() {    apr_time_t jun29 = MICROSECONDS_PER_DAY * 12599;    assertFormattedTime(jun29, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,000"));  }  /**   * Convert 29 Jun 2004 00:00:00 GMT for Chicago, daylight savings in effect.   */  void test4() {    apr_time_t jun30 = MICROSECONDS_PER_DAY * 12600;    //    //   log4cxx doesn't support non-fixed timezones at this time    //      passing the fixed equivalent to Chicago's Daylight Savings Time    //    assertFormattedTime(jun30, TimeZone::getTimeZone(LOG4CXX_STR("GMT-5")), LOG4CXX_STR("19:00:00,000"));  }  /**   * Test multiple calls in close intervals.   */  void test5() {    //   subsequent calls within one minute    //     are optimized to reuse previous formatted value    //     make a couple of nearly spaced calls    apr_time_t ticks = MICROSECONDS_PER_DAY * 12601;    assertFormattedTime(ticks, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,000"));    assertFormattedTime(ticks + 8000, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,008"));    assertFormattedTime(ticks + 17000, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,017"));    assertFormattedTime(ticks + 237000, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,237"));    assertFormattedTime(ticks + 1415000, TimeZone::getGMT(), LOG4CXX_STR("00:00:01,415"));  }  /**   *  Check that caching does not disregard timezone.   * This test would fail for revision 1.4 of AbsoluteTimeDateFormat.java.   */  void test6() {    apr_time_t jul2 = MICROSECONDS_PER_DAY * 12602;    assertFormattedTime(jul2, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,000"));    assertFormattedTime(jul2, TimeZone::getTimeZone(LOG4CXX_STR("GMT-5")), LOG4CXX_STR("19:00:00,000"));  }  /**   * Test multiple calls in close intervals predating 1 Jan 1970.   */  void test7() {    //   subsequent calls within one minute    //     are optimized to reuse previous formatted value    //     make a couple of nearly spaced calls    apr_time_t ticks = MICROSECONDS_PER_DAY * -7;    assertFormattedTime(ticks, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,000"));#if defined(_WIN32)    //    //   These tests fail on Unix due to bug in APR's explode_time    ////    assertFormattedTime(ticks + 8000, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,008"));//    assertFormattedTime(ticks + 17000, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,017"));//    assertFormattedTime(ticks + 237000, TimeZone::getGMT(), LOG4CXX_STR("00:00:00,237"));//    assertFormattedTime(ticks + 1415000, TimeZone::getGMT(), LOG4CXX_STR("00:00:01,415"));#endif  }  /**   * Checks that numberFormat works as expected.   */  void test8() {    Pool p;    LogString numb;    AbsoluteTimeDateFormat formatter;    formatter.numberFormat(numb, 87, p);    LOGUNIT_ASSERT_EQUAL((LogString) LOG4CXX_STR("87"), numb);  }};LOGUNIT_TEST_SUITE_REGISTRATION(AbsoluteTimeDateFormatTestCase);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -