Add missing tests to improve associative containers code coverage:
- Tests for key_comp() and value_comp() observers
- Tests for std::map and std::multimap value_compare member class
Differential D113998
[libcxx][NFC] Add tests for associative containers key_comp and value_comp kboyarinov on Nov 16 2021, 7:04 AM. Authored by
Details
Add missing tests to improve associative containers code coverage:
Diff Detail
Unit Tests Event TimelineComment Actions I did find some tests in libcxx/test/std/containers/associative/multiset/multiset.cons/compare.pass.cpp (and similarly for other container types). Could we incorporate the existing tests into yours and delete the old ones? IMO your new tests are more complete, the only thing I would do is use test_less like in the original ones.
Comment Actions I am not sure that we can just remove the test compare.pass.cpp, because it is intended to test std::map(const key_compare&) constructor and uses std::map::key_comp to test the constructor effect. New test is for std::map::key_comp effects. I agree that these tests are connected, but I do not think they are interchangeable. What do you think? Comment Actions Oh my, you are right, I looked too quickly and missed that we were testing the constructors. In those constructor tests, can you please remove the part of the comment that looks like: // key_compare key_comp() const; // value_compare value_comp() const; This confused me into thinking we were testing those methods there, instead of just the constructor (which is explained by the comment immediately above): // explicit multiset(const value_compare& comp); // value_compare and key_compare are the same type for set/multiset LGTM with my suggested comment cleanup to the existing constructor tests. Comment Actions I have cleaned-up comments in compare.pass.cpp but I have figured out that this test was the only place where std::[multi]set::key_comp() and std::[multi]set::value_comp() observers were tested. Comment Actions Thanks for the patch! Please provide "Author Name <email@domain>" if you want me to commit this on your behalf. |
Please return 0; at the end of the function. In freestanding mode, main is not treated specially so we'd get a warning "not returning anything from a function that returns int".