public void CreatePhraseDictionary(CreatePhraseDictionaryInput input)
        {
            GetMappedEntities();

            var dictionaryEntity = new PhraseDictionary();
            dictionaryEntity = Mapper.Map<CreatePhraseDictionaryInput, PhraseDictionary>(input);

            unitOfWork.GetGenericPhraseDictionaryRepository().Insert(dictionaryEntity);
        }
Example #2
0
        public void GetPhrase_PhraseKeyIsNull_ThrowsException()
        {
            // arrange
            var    sut       = new PhraseDictionary();
            Action sutAction = () => sut.GetPhrase(null, "en");

            // act, assert
            var ex = Assert.Throws <ArgumentNullException>(sutAction);

            Assert.Equal("phraseKey", ex.ParamName);
        }
Example #3
0
        public void GetPhrase_PhraseNotPresent_ReturnsPhraseKey()
        {
            // arrange
            var sut = new PhraseDictionary();

            // act
            var result = sut.GetPhrase("invalid phrase", "en");

            // assert
            Assert.Equal("invalid phrase", result);
        }
Example #4
0
        public void GetPhrase_PhraseKeyIsValid_ReturnsPhrase(string key, string expected)
        {
            // arrange
            var sut = new PhraseDictionary();

            // act
            var result = sut.GetPhrase(key, "en");

            // assert
            Assert.Equal(expected, result);
        }
Example #5
0
        public void CreatePhraseDictionary(CreatePhraseDictionaryInput input)
        {
            Logger.Info("Creating a new dictionary: " + input);
            GetMappedEntities();

            var dictionaryEntity = new PhraseDictionary();

            dictionaryEntity = Mapper.Map <CreatePhraseDictionaryInput, PhraseDictionary>(input);

            _phraseDictionaryRepository.Insert(dictionaryEntity);
        }
        /// <summary>
        /// Parse phrase data from a string and add it to the dictionary.
        /// </summary>
        /// <param name="str"></param>
        /// <returns></returns>
        public bool AddPhrase(string str)
        {
            if (string.IsNullOrEmpty(str))
            {
                return(false);
            }

            string[] parts = str.Split(' ');
            if (parts?.Length >= 3)
            {
                var key  = parts[0]; // 片語字串
                var freq = Convert.ToInt32(parts[1]);

                // 如果片語已經存在表中,則比較頻率。若出現頻率大於或等於既有的片語,則覆蓋之。
                PhraseData phrase = null;
                if (PhraseDictionary.ContainsKey(key)) // 片語已經存在表中
                {
                    phrase = PhraseDictionary[key];
                    if (freq < phrase.Frequency)
                    {
                        return(false);
                    }
                    phrase.BopomofoList.Clear();
                }
                else
                {
                    phrase = new PhraseData();
                    PhraseDictionary.Add(key, phrase);
                }

                phrase.Frequency = freq;
                for (int i = 2; i < parts.Length; i++)
                {
                    phrase.BopomofoList.Add(parts[i]);
                }
                Logger.Verbose("加入片語: {Key} {@Phrase}", key, phrase);
                return(true);
            }
            Logger.Warning($"無效的片語: {str}");
            return(false);
        }