diff options
author | aaron <aaron@10gen.com> | 2012-12-20 23:17:09 -0800 |
---|---|---|
committer | aaron <aaron@10gen.com> | 2012-12-22 15:05:49 -0800 |
commit | 947e48ee9afa8adfc6e4f2c242d1b2136d6a7019 (patch) | |
tree | 01c3bda810826fc9914711f122f999371c8252d3 /src/mongo/db/diskloc_test.cpp | |
parent | d02a03c48edc7f7a7eb7523b97ba3800dbe87856 (diff) | |
download | mongo-947e48ee9afa8adfc6e4f2c242d1b2136d6a7019.tar.gz |
SERVER-1752 Dedup DiskLocs in IntervalBtreeCursor using an unordered_set.
Diffstat (limited to 'src/mongo/db/diskloc_test.cpp')
-rw-r--r-- | src/mongo/db/diskloc_test.cpp | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/src/mongo/db/diskloc_test.cpp b/src/mongo/db/diskloc_test.cpp new file mode 100644 index 00000000000..db3e0c8a65b --- /dev/null +++ b/src/mongo/db/diskloc_test.cpp @@ -0,0 +1,53 @@ +/** + * Copyright (C) 2012 10gen Inc. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** Unit tests for DiskLoc. */ + +#include "mongo/db/diskloc.h" + +#include "mongo/unittest/unittest.h" + +namespace mongo { +namespace { + + TEST( DiskLoc, HashEqual ) { + DiskLoc locA( 1, 2 ); + DiskLoc locB; + locB.set( 1, 2 ); + ASSERT_EQUALS( locA, locB ); + DiskLoc::Hasher hasher; + ASSERT_EQUALS( hasher( locA ), hasher( locB ) ); + } + + TEST( DiskLoc, HashNotEqual ) { + DiskLoc original( 1, 2 ); + DiskLoc diffFile( 10, 2 ); + DiskLoc diffOfs( 1, 20 ); + DiskLoc diffBoth( 10, 20 ); + ASSERT_NOT_EQUALS( original, diffFile ); + ASSERT_NOT_EQUALS( original, diffOfs ); + ASSERT_NOT_EQUALS( original, diffBoth ); + + // Unequal DiskLocs need not produce unequal hashes. But unequal hashes are likely, and + // assumed here for sanity checking of the custom hash implementation. + DiskLoc::Hasher hasher; + ASSERT_NOT_EQUALS( hasher( original ), hasher( diffFile ) ); + ASSERT_NOT_EQUALS( hasher( original ), hasher( diffOfs ) ); + ASSERT_NOT_EQUALS( hasher( original ), hasher( diffBoth ) ); + } + +} // namespace +} // namespace mongo |