$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: daniel_james_at_[hidden]
Date: 2008-03-24 11:59:37
Author: danieljames
Date: 2008-03-24 11:59:36 EDT (Mon, 24 Mar 2008)
New Revision: 43828
URL: http://svn.boost.org/trac/boost/changeset/43828
Log:
Move the FNV dictionary into the cpp code, so that it can be tested for mistakes (like the one I just made).
Text files modified: 
   branches/unordered/trunk/libs/unordered/doc/hash_equality.qbk        |     4 ++--                                    
   branches/unordered/trunk/libs/unordered/doc/src_code/insensitive.cpp |    31 +++++++++++++++++++++++++++++++         
   2 files changed, 33 insertions(+), 2 deletions(-)
Modified: branches/unordered/trunk/libs/unordered/doc/hash_equality.qbk
==============================================================================
--- branches/unordered/trunk/libs/unordered/doc/hash_equality.qbk	(original)
+++ branches/unordered/trunk/libs/unordered/doc/hash_equality.qbk	2008-03-24 11:59:36 EDT (Mon, 24 Mar 2008)
@@ -22,7 +22,8 @@
 it.  So, if you wanted to use the
 [@http://www.isthe.com/chongo/tech/comp/fnv/ FNV-1 hash] you could write:
 
-    ``[classref boost::unordered_map]``<std::string, int, word_info, hash::fnv_1> dictionary;
+[import src_code/insensitive.cpp]
+[case_sensitive_dictionary_fnv]
 
 An example implementation of FNV-1, and some other hash functions are supplied
 in the examples directory.
@@ -32,7 +33,6 @@
 example, to implement a case insensitive dictionary you need to define a
 case insensitive equality predicate and hash function:
 
-[import src_code/insensitive.cpp]
 [case_insensitive_functions]
 
 Which you can then use in a case insensitive dictionary:
Modified: branches/unordered/trunk/libs/unordered/doc/src_code/insensitive.cpp
==============================================================================
--- branches/unordered/trunk/libs/unordered/doc/src_code/insensitive.cpp	(original)
+++ branches/unordered/trunk/libs/unordered/doc/src_code/insensitive.cpp	2008-03-24 11:59:36 EDT (Mon, 24 Mar 2008)
@@ -6,6 +6,7 @@
 #include <boost/unordered_map.hpp>
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/algorithm/string/predicate.hpp>
+#include "../../examples/hash_functions/fnv-1.hpp"
 
 //[case_insensitive_functions
     struct iequal_to
@@ -38,6 +39,36 @@
 //]
 
 int main() {
+//[case_sensitive_dictionary_fnv
+    boost::unordered_map<std::string, int, hash::fnv_1>
+        dictionary;
+//]
+
+    BOOST_TEST(dictionary.empty());
+
+    dictionary["one"] = 1;
+    BOOST_TEST(dictionary.size() == 1);
+    BOOST_TEST(dictionary.find("ONE") == dictionary.end());
+
+    dictionary.insert(std::make_pair("ONE", 2));
+    BOOST_TEST(dictionary.size() == 2);
+    BOOST_TEST(dictionary.find("ONE") != dictionary.end() &&
+            dictionary.find("ONE")->first == "ONE" &&
+            dictionary.find("ONE")->second == 2);
+
+    dictionary["One"] = 3;
+    BOOST_TEST(dictionary.size() == 3);
+    BOOST_TEST(dictionary.find("One") != dictionary.end() &&
+            dictionary.find("One")->first == "One" &&
+            dictionary.find("One")->second == 3);
+
+    dictionary["two"] = 4;
+    BOOST_TEST(dictionary.size() == 4);
+    BOOST_TEST(dictionary.find("Two") == dictionary.end() &&
+            dictionary.find("two") != dictionary.end() &&
+            dictionary.find("two")->second == 4);
+
+
 //[case_insensitive_dictionary
     boost::unordered_map<std::string, int, ihash, iequal_to>
         idictionary;