[PATCH] D25416: Add Chrono.h - std::chrono support header

Pavel Labath via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 14 11:51:46 PDT 2016


labath added inline comments.


================
Comment at: unittests/Support/Chrono.cpp:36
+  raw_string_ostream OS(S);
+  OS << system_clock::now();
+
----------------
mehdi_amini wrote:
> I initially thought this test (StringConversion ) would be doing something else (`TimePoint` string conversion), but both are valuable so what do you think about another test like:
> 
> ```
>   auto Now = system_clock::now();
>   
>   std::string S1;
>   {
>     raw_string_ostream OS(S1);
>     OS << system_clock::now();
>    }
> 
>   TimePoint T(Now);
>   std::string S2;
>   {
>     raw_string_ostream OS(S2);
>     OS << T;
>    }
>    ASSERT_EQ(S1, S2);
> }
> ```
> 
> (I don't think you added coverage for `raw_ostream &operator<<(raw_ostream &OS, TimePoint TP) {`, it is likely covered by the `TimeValue` tests (if any), but if we remove TimeValue at some point we may lose the coverage.
TimePoint is just a typedef for a pre-existing STL type that is implicitly constructible from the result of `system_clock::now()`. So, `OS << system_clock::now()` will actually invoke the  `raw_ostream &operator<<(raw_ostream &OS, TimePoint TP)`. The only difference between `OS << system_clock::now()`, and `OS << TimePoint(system_clock::now()` is that in the latter, the conversion operation is explicit (i.e., the newly introduced operator<< will have coverage even when TimeValue is removed, which I plan to do soon).

I can add the test you mentioned, but I don't think it is that useful, as it will just compare two invocations of the same function. I can also add an explicit TimePoint cast to the existing test, if you think that will make things clearer.


https://reviews.llvm.org/D25416





More information about the llvm-commits mailing list