Ignore:
Timestamp:
2018-07-05T21:41:24Z (7 years ago)
Author:
Dzejrou <dzejrou@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
c7d7368
Parents:
4727aacd
git-author:
Dzejrou <dzejrou@…> (2018-05-14 22:54:41)
git-committer:
Dzejrou <dzejrou@…> (2018-07-05 21:41:24)
Message:

cpp: added unordered_map tests and fixed bugs found by them

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/cpp/include/internal/test/tests.hpp

    r4727aacd rf2ba4c79  
    195195            void test_multi_bounds_and_ranges();
    196196    };
     197
     198    class unordered_map_test: public test_suite
     199    {
     200        public:
     201            bool run(bool) override;
     202            const char* name() override;
     203
     204        private:
     205            void test_constructors_and_assignment();
     206            void test_histogram();
     207            void test_emplace_insert();
     208            void test_multi();
     209
     210            template<class Iterator, class Container>
     211            void test_contains(const char* tname, Iterator first,
     212                               Iterator last, const Container& cont)
     213            {
     214                if (!assert_contains(first, last, cont))
     215                {
     216                    report(false, tname);
     217                    ++failed_;
     218                    ok_ = false;
     219                }
     220                else
     221                {
     222                    report(true, tname);
     223                    ++succeeded_;
     224                }
     225            }
     226
     227            template<class Iterator1, class Iterator2, class Container>
     228            void test_contains_multi(const char* tname, Iterator1 first1,
     229                               Iterator1 last1, Iterator2 first2,
     230                               const Container& cont)
     231            {
     232                if (!assert_contains_multi(first1, last1, first2, cont))
     233                {
     234                    report(false, tname);
     235                    ++failed_;
     236                    ok_ = false;
     237                }
     238                else
     239                {
     240                    report(true, tname);
     241                    ++succeeded_;
     242                }
     243            }
     244
     245            template<class Iterator, class Container>
     246            bool assert_contains(Iterator first, Iterator last, const Container& cont)
     247            {
     248                while (first != last)
     249                {
     250                    if (cont.find(*first++) == cont.end())
     251                        return false;
     252                }
     253
     254                return true;
     255            }
     256
     257            template<class Iterator1, class Iterator2, class Container>
     258            bool assert_contains_multi(Iterator1 first1, Iterator1 last1,
     259                                       Iterator2 first2, const Container& cont)
     260            {
     261                while (first1 != last1)
     262                {
     263                    if (cont.count(*first1++) != *first2++)
     264                        return false;
     265                }
     266
     267                return true;
     268            }
     269    };
    197270}
    198271
Note: See TracChangeset for help on using the changeset viewer.