timeParseTest.cpp 5.6 KB
Newer Older
H
hjxilinx 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#include <gtest/gtest.h>
#include <cassert>
#include <iostream>

#include "taos.h"
#include "tstoken.h"
#include "ttime.h"
#include "tutil.h"

int main(int argc, char** argv) {
  testing::InitGoogleTest(&argc, argv);
  return RUN_ALL_TESTS();
}

extern void deltaToUtcInitOnce();
/* test parse time function */
TEST(testCase, parse_time) {
  
  taos_options(TSDB_OPTION_TIMEZONE, "GMT-8");
  deltaToUtcInitOnce();
  
  char t1[] = "2018-1-1 1:1:1.952798";
  char t13[] = "1970-1-1 0:0:0";

  int64_t time = 0, time1 = 0;

dengyihao's avatar
dengyihao 已提交
27
  taosParseTime(t1, &time, strlen(t1), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
28 29
  EXPECT_EQ(time, 1514739661952);

dengyihao's avatar
dengyihao 已提交
30
  taosParseTime(t13, &time, strlen(t13), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
31 32 33
  EXPECT_EQ(time, timezone * MILLISECOND_PER_SECOND);

  char t2[] = "2018-1-1T1:1:1.952Z";
dengyihao's avatar
dengyihao 已提交
34
  taosParseTime(t2, &time, strlen(t2), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
35 36 37 38

  EXPECT_EQ(time, 1514739661952 + 28800000);

  char t3[] = "2018-1-1 1:01:01.952";
dengyihao's avatar
dengyihao 已提交
39
  taosParseTime(t3, &time, strlen(t3), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
40 41 42 43 44 45 46 47
  EXPECT_EQ(time, 1514739661952);

  char t4[] = "2018-1-1 1:01:01.9";
  char t5[] = "2018-1-1 1:01:1.900";
  char t6[] = "2018-01-01 1:1:1.90";
  char t7[] = "2018-01-01 01:01:01.9";
  char t8[] = "2018-01-01 01:01:01.9007865";

dengyihao's avatar
dengyihao 已提交
48 49
  taosParseTime(t4, &time, strlen(t4), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t5, &time1, strlen(t5), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
50 51
  EXPECT_EQ(time, time1);

dengyihao's avatar
dengyihao 已提交
52 53
  taosParseTime(t4, &time, strlen(t4), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t6, &time1, strlen(t6), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
54 55
  EXPECT_EQ(time, time1);

dengyihao's avatar
dengyihao 已提交
56 57
  taosParseTime(t4, &time, strlen(t4), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t7, &time1, strlen(t7), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
58 59
  EXPECT_EQ(time, time1);

dengyihao's avatar
dengyihao 已提交
60 61
  taosParseTime(t5, &time, strlen(t5), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t8, &time1, strlen(t8), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
62 63 64 65
  EXPECT_EQ(time, time1);

  char t9[] = "2017-4-3 1:1:2.980";
  char t10[] = "2017-4-3T2:1:2.98+9:00";
dengyihao's avatar
dengyihao 已提交
66 67
  taosParseTime(t9, &time, strlen(t9), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t10, &time1, strlen(t10), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
68 69 70
  EXPECT_EQ(time, time1);

  char t11[] = "2017-4-3T2:1:2.98+09:00";
dengyihao's avatar
dengyihao 已提交
71 72
  taosParseTime(t11, &time, strlen(t11), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t10, &time1, strlen(t10), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
73 74 75
  EXPECT_EQ(time, time1);

  char t12[] = "2017-4-3T2:1:2.98+0900";
dengyihao's avatar
dengyihao 已提交
76 77
  taosParseTime(t11, &time, strlen(t11), TSDB_TIME_PRECISION_MILLI, 0);
  taosParseTime(t12, &time1, strlen(t12), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
78 79 80 81 82
  EXPECT_EQ(time, time1);

  taos_options(TSDB_OPTION_TIMEZONE, "UTC");  
  deltaToUtcInitOnce();
  
dengyihao's avatar
dengyihao 已提交
83
  taosParseTime(t13, &time, strlen(t13), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
84 85 86 87 88 89
  EXPECT_EQ(time, 0);

  taos_options(TSDB_OPTION_TIMEZONE, "Asia/Shanghai");
  deltaToUtcInitOnce();
  
  char t14[] = "1970-1-1T0:0:0Z";
dengyihao's avatar
dengyihao 已提交
90
  taosParseTime(t14, &time, strlen(t14), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
91 92 93
  EXPECT_EQ(time, 0);

  char t40[] = "1970-1-1 0:0:0.999999999";
dengyihao's avatar
dengyihao 已提交
94
  taosParseTime(t40, &time, strlen(t40), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
95 96 97
  EXPECT_EQ(time, 999 + timezone * MILLISECOND_PER_SECOND);

  char t41[] = "1997-1-1 0:0:0.999999999";
dengyihao's avatar
dengyihao 已提交
98
  taosParseTime(t41, &time, strlen(t41), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
99 100 101 102
  EXPECT_EQ(time, 852048000999);

  int64_t k = timezone;
  char    t42[] = "1997-1-1T0:0:0.999999999Z";
dengyihao's avatar
dengyihao 已提交
103
  taosParseTime(t42, &time, strlen(t42), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
104 105 106 107 108
  EXPECT_EQ(time, 852048000999 - timezone * MILLISECOND_PER_SECOND);

  ////////////////////////////////////////////////////////////////////
  // illegal timestamp format
  char t15[] = "2017-12-33 0:0:0";
dengyihao's avatar
dengyihao 已提交
109
  EXPECT_EQ(taosParseTime(t15, &time, strlen(t15), TSDB_TIME_PRECISION_MILLI, 0), -1);
H
hjxilinx 已提交
110 111

  char t16[] = "2017-12-31 99:0:0";
dengyihao's avatar
dengyihao 已提交
112
  EXPECT_EQ(taosParseTime(t16, &time, strlen(t16), TSDB_TIME_PRECISION_MILLI, 0), -1);
H
hjxilinx 已提交
113 114

  char t17[] = "2017-12-31T9:0:0";
dengyihao's avatar
dengyihao 已提交
115
  EXPECT_EQ(taosParseTime(t17, &time, strlen(t17), TSDB_TIME_PRECISION_MILLI, 0), -1);
H
hjxilinx 已提交
116 117

  char t18[] = "2017-12-31T9:0:0.Z";
dengyihao's avatar
dengyihao 已提交
118
  EXPECT_EQ(taosParseTime(t18, &time, strlen(t18), TSDB_TIME_PRECISION_MILLI, 0), -1);
H
hjxilinx 已提交
119 120

  char t19[] = "2017-12-31 9:0:0.-1";
dengyihao's avatar
dengyihao 已提交
121
  EXPECT_EQ(taosParseTime(t19, &time, strlen(t19), TSDB_TIME_PRECISION_MILLI, 0), -1);
H
hjxilinx 已提交
122 123

  char t20[] = "2017-12-31 9:0:0.1+12:99";
dengyihao's avatar
dengyihao 已提交
124
  EXPECT_EQ(taosParseTime(t20, &time, strlen(t20), TSDB_TIME_PRECISION_MILLI, 0), 0);
H
hjxilinx 已提交
125 126 127
  EXPECT_EQ(time, 1514682000100);

  char t21[] = "2017-12-31T9:0:0.1+12:99";
dengyihao's avatar
dengyihao 已提交
128
  EXPECT_EQ(taosParseTime(t21, &time, strlen(t21), TSDB_TIME_PRECISION_MILLI, 0), -1);
H
hjxilinx 已提交
129 130

  char t22[] = "2017-12-31 9:0:0.1+13:1";
dengyihao's avatar
dengyihao 已提交
131
  EXPECT_EQ(taosParseTime(t22, &time, strlen(t22), TSDB_TIME_PRECISION_MILLI, 0), 0);
H
hjxilinx 已提交
132 133

  char t23[] = "2017-12-31T9:0:0.1+13:1";
dengyihao's avatar
dengyihao 已提交
134
  EXPECT_EQ(taosParseTime(t23, &time, strlen(t23), TSDB_TIME_PRECISION_MILLI, 0), 0);
H
hjxilinx 已提交
135 136 137 138 139


  //======================== add some case ============================//
  
  char b1[] = "9999-12-31 23:59:59.999";
dengyihao's avatar
dengyihao 已提交
140
  taosParseTime(b1, &time, strlen(b1), TSDB_TIME_PRECISION_MILLI,0);
H
hjxilinx 已提交
141 142 143 144
  EXPECT_EQ(time, 253402271999999);


  char b2[] = "2020-01-01 01:01:01.321";
dengyihao's avatar
dengyihao 已提交
145
  taosParseTime(b2, &time, strlen(b2), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
146 147 148 149 150
  EXPECT_EQ(time, 1577811661321);

  taos_options(TSDB_OPTION_TIMEZONE, "America/New_York");  
  deltaToUtcInitOnce();
  
dengyihao's avatar
dengyihao 已提交
151
  taosParseTime(t13, &time, strlen(t13), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
152 153 154 155 156
  EXPECT_EQ(time, 18000 * MILLISECOND_PER_SECOND);

  taos_options(TSDB_OPTION_TIMEZONE, "Asia/Tokyo");  
  deltaToUtcInitOnce();
  
dengyihao's avatar
dengyihao 已提交
157
  taosParseTime(t13, &time, strlen(t13), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
158 159 160 161 162
  EXPECT_EQ(time, -32400 * MILLISECOND_PER_SECOND);

  taos_options(TSDB_OPTION_TIMEZONE, "Asia/Shanghai");
  deltaToUtcInitOnce();
  
dengyihao's avatar
dengyihao 已提交
163
  taosParseTime(t13, &time, strlen(t13), TSDB_TIME_PRECISION_MILLI, 0);
H
hjxilinx 已提交
164 165 166 167
  EXPECT_EQ(time, -28800 * MILLISECOND_PER_SECOND);
}