summaryrefslogtreecommitdiff
path: root/src/mongo/db/diskloc_test.cpp
diff options
context:
space:
mode:
authoraaron <aaron@10gen.com>2012-12-20 23:17:09 -0800
committeraaron <aaron@10gen.com>2012-12-22 15:05:49 -0800
commit947e48ee9afa8adfc6e4f2c242d1b2136d6a7019 (patch)
tree01c3bda810826fc9914711f122f999371c8252d3 /src/mongo/db/diskloc_test.cpp
parentd02a03c48edc7f7a7eb7523b97ba3800dbe87856 (diff)
downloadmongo-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.cpp53
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