Example #1
0
        public void ContainsKey()
        {
            OccurrenceDictionary dic = new OccurrenceDictionary();
            IDocument            doc = MockDocument("Doc", "Doc", "d", DateTime.Now);

            Assert.IsFalse(dic.ContainsKey(doc), "ContainsKey should return false");
            dic.Add(doc, new SortedBasicWordInfoSet());
            Assert.IsTrue(dic.ContainsKey(doc), "ContainsKey should return true");
            Assert.IsFalse(dic.ContainsKey(MockDocument("Doc2", "Doc 2", "d", DateTime.Now)), "ContainsKey should return false");

            IDocument doc2 = MockDocument("Doc", "Doc", "d", DateTime.Now);

            Assert.IsTrue(dic.ContainsKey(doc2), "ContainsKey should return true");
        }
Example #2
0
        public void ContainsKey_Key_Null()
        {
            OccurrenceDictionary sut = new OccurrenceDictionary();
            var ex = Assert.Throws <ArgumentNullException>(() => sut.ContainsKey(null));

            Assert.Equal("Value cannot be null.\r\nParameter name: key", ex.Message);
        }
Example #3
0
        public void ContainsKey_NullKey()
        {
            OccurrenceDictionary dic = new OccurrenceDictionary();

            dic.ContainsKey(null);
        }
        /// <summary>
        /// Tries to load all data related to a word from the database.
        /// </summary>
        /// <param name="text">The word text.</param>
        /// <param name="word">The returned word.</param>
        /// <param name="connection">An open database connection.</param>
        /// <returns><c>true</c> if the word is found, <c>false</c> otherwise.</returns>
        private bool TryFindWord(string text, out Word word, DbConnection connection)
        {
            // 1. Find word - if not found, return
            // 2. Read all raw word mappings
            // 3. Read all documents (unique)
            // 4. Build result data structure

            ICommandBuilder builder = GetCommandBuilder();
            QueryBuilder queryBuilder = new QueryBuilder(builder);

            string query = queryBuilder.SelectFrom("IndexWord", new string[] { "Id" });
            query = queryBuilder.Where(query, "Text", WhereOperator.Equals, "Text");

            List<Parameter> parameters = new List<Parameter>(1);
            parameters.Add(new Parameter(ParameterType.String, "Text", text));

            DbCommand command = builder.GetCommand(connection, query, parameters);

            int wordId = ExecuteScalar<int>(command, -1, false);

            if(wordId == -1) {
                word = null;
                return false;
            }

            // Read all raw mappings
            query = queryBuilder.SelectFrom("IndexWordMapping");
            query = queryBuilder.Where(query, "Word", WhereOperator.Equals, "WordId");

            parameters = new List<Parameter>(1);
            parameters.Add(new Parameter(ParameterType.Int32, "WordId", wordId));

            command = builder.GetCommand(connection, query, parameters);

            DbDataReader reader = ExecuteReader(command, false);

            List<DumpedWordMapping> mappings = new List<DumpedWordMapping>(2048);
            while(reader != null && reader.Read()) {
                mappings.Add(new DumpedWordMapping((uint)wordId,
                    (uint)(int)reader["Document"],
                    (ushort)(short)reader["FirstCharIndex"], (ushort)(short)reader["WordIndex"],
                    (byte)reader["Location"]));
            }
            CloseReader(reader);

            if(mappings.Count == 0) {
                word = null;
                return false;
            }

            // Find all documents
            query = queryBuilder.SelectFrom("IndexDocument");
            query = queryBuilder.Where(query, "Id", WhereOperator.Equals, "DocId");

            parameters = new List<Parameter>(1);
            parameters.Add(new Parameter(ParameterType.Int32, "DocId", 0));

            Dictionary<uint, IDocument> documents = new Dictionary<uint, IDocument>(64);
            foreach(DumpedWordMapping map in mappings) {
                uint docId = map.DocumentID;
                if(documents.ContainsKey(docId)) continue;

                parameters[0].Value = (int)docId;
                command = builder.GetCommand(connection, query, parameters);

                reader = ExecuteReader(command, false);

                if(reader != null && reader.Read()) {
                    DumpedDocument dumpedDoc = new DumpedDocument(docId,
                        reader["Name"] as string, reader["Title"] as string,
                        reader["TypeTag"] as string,
                        (DateTime)reader["DateTime"]);

                    IDocument document = BuildDocument(dumpedDoc);

                    if(document != null) documents.Add(docId, document);
                }
                CloseReader(reader);
            }

            OccurrenceDictionary occurrences = new OccurrenceDictionary(mappings.Count);
            foreach(DumpedWordMapping map in mappings) {
                if(!occurrences.ContainsKey(documents[map.DocumentID])) {
                    occurrences.Add(documents[map.DocumentID], new SortedBasicWordInfoSet(2));
                }

                occurrences[documents[map.DocumentID]].Add(new BasicWordInfo(
                    map.FirstCharIndex, map.WordIndex, WordLocation.GetInstance(map.Location)));
            }

            word = new Word((uint)wordId, text, occurrences);
            return true;
        }
        public void ContainsKey_NullKey()
        {
            OccurrenceDictionary dic = new OccurrenceDictionary();

            Assert.That(() => dic.ContainsKey(null), Throws.ArgumentNullException);
        }
 public void ContainsKey_NullKey()
 {
     OccurrenceDictionary dic = new OccurrenceDictionary();
     dic.ContainsKey(null);
 }
        public void ContainsKey()
        {
            OccurrenceDictionary dic = new OccurrenceDictionary();
            IDocument doc = MockDocument("Doc", "Doc", "d", DateTime.Now);
            Assert.IsFalse(dic.ContainsKey(doc), "ContainsKey should return false");
            dic.Add(doc, new SortedBasicWordInfoSet());
            Assert.IsTrue(dic.ContainsKey(doc), "ContainsKey should return true");
            Assert.IsFalse(dic.ContainsKey(MockDocument("Doc2", "Doc 2", "d", DateTime.Now)), "ContainsKey should return false");

            IDocument doc2 = MockDocument("Doc", "Doc", "d", DateTime.Now);
            Assert.IsTrue(dic.ContainsKey(doc2), "ContainsKey should return true");
        }