public async Task GET()
        {
            Guid       testId           = Guid.Empty;
            PhraseEdit gottenPhraseEdit = null;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                var allPhrases = await PhraseList.GetAllAsync();

                testId           = allPhrases.First().Id;
                gottenPhraseEdit = await PhraseEdit.GetPhraseEditAsync(testId);
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsNotNull(gottenPhraseEdit),
                    () => Assert.AreEqual(testId, gottenPhraseEdit.Id)
                    );

                EnqueueTestComplete();
                Teardown();
                isAsyncComplete = true;
            }
        }
Exemple #2
0
        public async Task GET_ALL()
        {
            PhraseList allPhrases = null;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                allPhrases = await PhraseList.GetAllAsync();
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsNotNull(allPhrases),
                    () => Assert.IsTrue(allPhrases.Count > 0),
                    //KEEP THIS LAST IN THE CALLBACKS
                    () => Teardown()
                    );

                EnqueueTestComplete();
                isAsyncComplete = true;
            }
        }
        private void Update()
        {
            if (!string.IsNullOrEmpty(TextInput))
            {
                int nRet = Engine.PrepareText(_inputText); //returns 0 if less than 1000 words
                Console.WriteLine(nRet);

                if (nRet == 0 || nRet == 6) //not sure what 0 or 6 means but that's what Salience set the returns for non-error as
                {
                    SalienceSentiment mySentiment = Engine.GetDocumentSentiment(true, String.Empty);
                    resetList();
                    DocumentSentiment = mySentiment.fScore * 100;
                    DocScore          = (int)DocumentSentiment;

                    foreach (var a in mySentiment.Phrases.ToArray())
                    {
                        S_Phrase p = new S_Phrase {
                            sp_score  = a.fScore,
                            sp_phrase = a.Phrase.sText
                        };
                        PhraseList.Add(p);
                    }
                    foreach (var b in mySentiment.ModelSentiment.ToArray())
                    {
                        S_ModelSentiment m = new S_ModelSentiment
                        {
                            ms_name     = b.sName,
                            ms_best     = b.nBest,
                            ms_positive = b.fPositive,
                            ms_mixed    = b.fMixed,
                            ms_negative = b.fNegative,
                            ms_neutral  = b.fNeutral
                        };
                        ModelSentimentList.Add(m);
                    }

                    List <KeyValuePair <string, int> > MyValue = new List <KeyValuePair <string, int> >();
                    MyValue.Add(new KeyValuePair <string, int>("Positive", (int)(ModelSentimentList[0].ms_positive * 100)));
                    MyValue.Add(new KeyValuePair <string, int>("Negative", (int)(ModelSentimentList[0].ms_negative * 100)));
                    MyValue.Add(new KeyValuePair <string, int>("Mixed", (int)(ModelSentimentList[0].ms_mixed * 100)));
                    MyValue.Add(new KeyValuePair <string, int>("Neutral", (int)(ModelSentimentList[0].ms_neutral * 100)));

                    PieChartItems = MyValue;

                    /*
                     * foreach (var c in mySentiment.Emotions.ToArray())
                     * {
                     *  S_Emotion e = new S_Emotion
                     *  {
                     *      e_topic = c.sTopic,
                     *      e_hit = c.nHits,
                     *      e_score = c.fScore,
                     *      s_summary = c.sSummary
                     *  };
                     *  EmotionList.Add(e);
                     * }
                     */
                }
            }
        }
Exemple #4
0
        static void Main(string[] args)
        {
            var ph1 = new Phrase("1", new List <string> {
                "eng1", "rus1"
            });
            var ph2 = new Phrase("2", new List <string> {
                "eng2", "rus2"
            });

            var pLst = new PhraseList();

            pLst.Phrases.Add(ph1);
            pLst.Phrases.Add(ph2);

            pLst.Languages.Add("English");
            pLst.Languages.Add("Русский");
            pLst.Languages.Add("Deutsch");


            var filename = AppDomain.CurrentDomain.BaseDirectory + @"\somefile.xml";


            Serialization.SaveToXmlFile(filename, pLst);


            //var lst = Serialization.LoadXmlFile(typeof (PhraseList), filename);

            Console.WriteLine(Translate.Dictionary["1"][0]);
            Console.WriteLine(Translate.Dictionary["2"][0]);


            Console.Read();
        }
Exemple #5
0
 /// <summary>
 /// This criteria is used when finding a phrase in a list of phrases.
 ///
 /// When you get this phrase from the PhraseList, however, that phrase will be a child phrase (of the PhraseList).
 /// I am writing this criteria to help optimize DB calls, so the param 'getPhraseFromDB' refers to retrieving
 /// the non-child version of the phrase (if found) from the DB.
 ///
 /// If this were not included, it would take an additional round-trip data call to do this on the calling end.
 /// The retriever is already working on the server side, so this will be faster.
 /// </summary>
 /// <param name="phraseText"></param>
 /// <param name="languageText"></param>
 /// <param name="phrases"></param>
 /// <param name="getPhraseFromDB"></param>
 public FindPhraseInPhraseListCriteria(string phraseText, string languageText, PhraseList phrases, bool getPhraseFromDB = true)
 {
     PhraseText      = phraseText;
     LanguageText    = languageText;
     Phrases         = phrases;
     GetPhraseFromDB = getPhraseFromDB;
 }
 protected virtual void UnhookFrom(PhraseList modelList)
 {
     if (modelList != null)
     {
         modelList.CollectionChanged += HandleCollectionChanged;
         modelList.ChildChanged      += HandleChildChanged;
     }
 }
Exemple #7
0
        public async Task GET_ALL_SET_NEW_LANGUAGE_CANCELEDIT()
        {
            var          allPhrasesCount          = -1;
            bool         phrasesCountStaysTheSame = false;
            LanguageEdit initLang0 = null;
            LanguageEdit initLang1 = null;
            LanguageEdit initLang2 = null;

            PhraseList allPhrases          = null;
            PhraseList canceledEditPhrases = null;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                allPhrases = await PhraseList.GetAllAsync();

                allPhrasesCount = allPhrases.Count;
                initLang0       = allPhrases[0].Language;
                initLang1       = allPhrases[1].Language;
                initLang2       = allPhrases[2].Language;

                allPhrases[0].BeginEdit();
                allPhrases[0].Language = _ServerSpanishLang;
                allPhrases[0].CancelEdit();

                canceledEditPhrases      = allPhrases;
                phrasesCountStaysTheSame = allPhrasesCount == canceledEditPhrases.Count;
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.AreEqual(initLang0.Id, canceledEditPhrases[0].LanguageId),
                    () => Assert.AreEqual(initLang1.Id, canceledEditPhrases[1].LanguageId),
                    () => Assert.AreEqual(initLang2.Id, canceledEditPhrases[2].LanguageId),
                    () => Assert.IsNotNull(allPhrases),
                    () => Assert.IsNotNull(canceledEditPhrases),
                    () => Assert.IsTrue(phrasesCountStaysTheSame),
                    () => Assert.IsTrue(allPhrasesCount > 0),

                    //KEEP THIS LAST IN THE CALLBACKS
                    () => Teardown()
                    );

                EnqueueTestComplete();
                isAsyncComplete = true;
            }
        }
        public override async System.Threading.Tasks.Task Setup()
        {
            //MUST AUTHENTICATE FIRST, SO CALL BASE.SETUP()
            await base.Setup();

            var allPhrases = await PhraseList.GetAllAsync();

            _TestPhraseEdit = allPhrases.First();
        }
 private void PopulateViewModels(PhraseList phrases)
 {
     Items.Clear();
     foreach (var phraseEdit in phrases)
     {
         var itemViewModel = Services.Container.GetExportedValue <ViewTranslationsPhrasesItemViewModel>();
         itemViewModel.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(HandleItemViewModelChanged);
         itemViewModel.Model            = phraseEdit;
         Items.Add(itemViewModel);
     }
 }
Exemple #10
0
        private IEnumerable <PhraseEdit> FilterPhrases(PhraseList phrases)
        {
            if (string.IsNullOrEmpty(FilterText))
            {
                return(phrases);//.ToList();
            }
            var results = from phrase in phrases
                          where phrase.Text.Contains(FilterText)
                          select phrase;

            return(results);//.ToList();
        }
        private static PhraseList CreateList()
        {
            var pLst = new PhraseList();

            //---phrases
            pLst.Phrases.Add(new Phrase("1",
                                        new[]
            {
                "eng 1",
                "rus 1",
                "ger 1"
            }));

            pLst.Phrases.Add(new Phrase("2",
                                        new[]
            {
                "eng 2",
                "rus 2",
                "ger 2"
            }));

            pLst.Phrases.Add(new Phrase("TestLang_First",
                                        new[]
            {
                "english enum 1",
                "russian enum 1",
                "german enum  1"
            }));

            pLst.Phrases.Add(new Phrase("TestLang_Second",
                                        new[]
            {
                "english enum 2",
                "russian enum 2",
                "german enum  2"
            }));



            //---languages

            pLst.Languages.Add("English");
            pLst.Languages.Add("Русский");
            pLst.Languages.Add("Deutsch");

            //-------

            return(pLst);
        }
        private void Youdao2Bing_Click(object sender, EventArgs e)
        {
            var openFileDialog = new OpenFileDialog
            {
                CheckFileExists  = true,
                InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                Filter           = "xml 文件|*.xml"
            };
            var ret = openFileDialog.ShowDialog();

            if (ret != DialogResult.OK)
            {
                return;
            }

            var file = openFileDialog.FileName;

            var ydElements = XElement.Parse(File.ReadAllText(file));
            var bindgWords = ydElements.Elements("item").Select(element => new Phrase
            {
                Eng      = element.Element("word").Value,
                Phonetic = element.Element("phonetic").Value,
                Defi     = element.Element("trans").Value,
                Date     = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
            }).ToList();

            var phraseList = new PhraseList {
                Phrases = bindgWords
            };

            var bingXml = SerializeHelper.ToXml(phraseList);

            var saveFileDialog = new SaveFileDialog
            {
                AddExtension     = true,
                CheckPathExists  = true,
                InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                Filter           = "xml 文件|*.xml"
            };

            var saveRet = saveFileDialog.ShowDialog();

            if (saveRet == DialogResult.OK)
            {
                File.WriteAllText(saveFileDialog.FileName, bingXml.ToString());
            }

            MessageBox.Show("转换成功。");
        }
Exemple #13
0
        public async Task GET_ALL_CHECK_GLITCH()
        {
            PhraseList allPhrases           = null;
            int        allPhrasesCount      = -1;
            PhraseList savedAllPhrases      = null;
            int        savedAllPhrasesCount = -2;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                allPhrases = await PhraseList.GetAllAsync();

                allPhrasesCount = allPhrases.Count;

                savedAllPhrases = await allPhrases.SaveAsync();

                savedAllPhrasesCount = savedAllPhrases.Count;
                Assert.AreEqual(allPhrasesCount, savedAllPhrasesCount);
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsNotNull(allPhrases),
                    () => Assert.IsTrue(allPhrasesCount > 0),
                    //KEEP THIS LAST IN THE CALLBACKS
                    () => Teardown()
                    );

                EnqueueTestComplete();
                isAsyncComplete = true;
            }
        }
Exemple #14
0
        private async Task InitializeModelAsync()
        {
            #region Thinking
            var thinkId = System.Guid.NewGuid();
            History.Events.ThinkingAboutTargetEvent.Publish(thinkId);
            #endregion
            var allPhrases = await PhraseList.GetAllAsync();

            ModelList = allPhrases;

            #region Thinking
            var thinkId2 = System.Guid.NewGuid();
            History.Events.ThinkingAboutTargetEvent.Publish(thinkId);
            #endregion
            PopulateItems(allPhrases);
            #region Thinked
            History.Events.ThinkedAboutTargetEvent.Publish(thinkId2);
            #endregion

            #region Thinked
            History.Events.ThinkedAboutTargetEvent.Publish(thinkId);
            #endregion
        }
Exemple #15
0
        public async Task GET_ALL_EDIT_CANCELEDIT()
        {
            var text0         = "This is edited Text00000._canceledit";
            var text1         = "This is edited Text11111._canceledit";
            var text2         = "This is edited Text22222222222222222222222._canceledit";
            var containsText0 = false;
            var containsText1 = false;
            var containsText2 = false;

            PhraseList allPhrases          = null;
            PhraseList canceledEditPhrases = null;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                allPhrases = await PhraseList.GetAllAsync();

                allPhrases.BeginEdit();
                allPhrases[0].Text = text0;
                allPhrases[1].Text = text1;
                allPhrases[2].Text = text2;
                allPhrases.CancelEdit();

                canceledEditPhrases = allPhrases;

                containsText0 = (from phrase in canceledEditPhrases
                                 where phrase.Text == text0
                                 select phrase).Count() > 0;
                containsText1 = (from phrase in canceledEditPhrases
                                 where phrase.Text == text1
                                 select phrase).Count() > 0;
                containsText2 = (from phrase in canceledEditPhrases
                                 where phrase.Text == text2
                                 select phrase).Count() > 0;
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsNotNull(allPhrases),
                    () => Assert.IsNotNull(canceledEditPhrases),
                    () => Assert.IsFalse(containsText0),
                    () => Assert.IsFalse(containsText1),
                    () => Assert.IsFalse(containsText2),
                    () => Assert.IsTrue(allPhrases.Count > 0),
                    //KEEP THIS LAST IN THE CALLBACKS
                    () => Teardown()
                    );

                EnqueueTestComplete();
                isAsyncComplete = true;
            }
        }
Exemple #16
0
        public override async Task SaveAsync()
        {
            IsSaving = true;
            IncrementApplicationBusyEventMessage.Publish("AddSongMultiLineTextEditViewModel.SaveAsync");
            //DisableNavigationRequestedEventMessage.Publish();
            var thinkId = Guid.NewGuid();

            History.Events.ThinkingAboutTargetEvent.Publish(thinkId);
            try
            {
                //TODO: PUT ALL SAVE SONG STUFF INTO ONE SAVER COMMAND OBJECT.  THIS OBJECT SHOULD TAKE THE ENTERED SONG INFO, PARSE THE SONG, AND SAVE ALL SUBPHRASES AS WE DO HERE.  THIS SHOULD *NOT* GO INTO THE SONGEDIT MODEL SAVE, AS THE SONG MODEL SHOULD NOT PARSE EVERY TIME IT IS SAVED.

                ///when we save the song lyrics, we want to...
                ///  1) Parse each text line into a subphrase, parse each subphrase into a word-subphrase
                ///     if subphrase is unique and not already in the database, save that subphrase
                ///  2) Create LineEdits from text lines and add these to the song model.
                ///  3) Save the song model itself.
                ///e.g.
                ///  this is line one
                ///  this is line two
                ///  this is line three
                ///  subphrases: "this is line one" "this is line two" "this is line three"
                ///  word-subphrases: "this" "is" "line" "one" "two" "three"

                #region PARSE THE SONGTEXT INTO LINES AND ADD TO MODEL.LINES
                {
                    var songText     = SongText;
                    var languageText = SongLanguage.Text;
                    var lines        = songText.ParseIntoLines(); //removes empty entries
                    var words        = songText.ParseIntoWords();
                    var wordCount    = words.Count;
                    var escapeHelper = 0;
                    while (words.Contains(""))
                    {
                        History.Events.ThinkedAboutTargetEvent.Publish();

                        //ESCAPE HELPER TO ESCAPE IN CASE OF INFINITE LOOP WITH WHILE STATEMENT.
                        //I WANT THE WHILE LOOP TO USE THE QUICKNESS OF CONTAINS(),
                        //AS OPPOSED TO FOREACH-ING OR FOR-ING.  BUT I HATE POSSIBILITY OF
                        //ENDLESS LOOP, EVEN THOUGH I DON'T SEE HOW IT COULD HAPPEN.
                        words.Remove("");
                        escapeHelper++;
                        if (escapeHelper > wordCount)
                        {
                            break;
                        }
                    }

                    //I'M CHANGING THIS TO UTILIZE MY LINELIST.NEWLINELIST(INFOS) ALREADY IN
                    //PLACE.
                    //SO AT THIS TIME, WE ONLY NEED TO SAVE THE WORDS THEMSELVES.  THE LINES
                    //WILL BE SAVED IN FUTURE STEP IN THIS BLOCK.
                    var allWords = new List <string>(words);

                    #region REMOVE ALL WORDS THAT ALREADY EXIST IN DB, SO THAT WE ARE LEFT WITH ONLY NEW WORDS

                    //WE DON'T WANT TO ADD DUPLICATE WORDS TO THE DB, SO CHECK TO SEE IF ANY
                    //OF THESE WORDS ALREADY EXIST IN DB.
                    var removeCmd = await RemoveAlreadyExistingPhraseTextsCommand.ExecuteAsync(languageText, allWords);

                    var allWordsNotAlreadyInDatabase = removeCmd.PrunedPhraseTexts;

                    #region CREATE PHRASE FOR EACH NEW WORD

                    var criteria = new Business.Criteria.PhraseTextsCriteria(languageText,
                                                                             allWordsNotAlreadyInDatabase);
                    History.Events.ThinkedAboutTargetEvent.Publish();
                    var phraseListContainingAllWordsNotAlreadyInDatabase =
                        await PhraseList.NewPhraseListAsync(criteria);

                    History.Events.ThinkedAboutTargetEvent.Publish();

                    #region SAVE ALL WORDS THAT ARE NEW (NOT ALREADY IN DATABASE)

                    //phraseListContainingAllWordsNotAlreadyInDatabase =
                    //  await phraseListContainingAllWordsNotAlreadyInDatabase.SaveAsync();
                    //SO NOW, ALL OF OUR SONG'S WORDS THAT WERE NOT ALREADY IN THE DATABASE
                    //ARE INDEED NOW STORED IN THE DATABASE.

                    #region CREATE LINEEDIT OBJECTS FOR EACH TEXT LINE AND ADD TO MODEL

                    var lineInfoDictionary = new Dictionary <int, string>();
                    for (int i = 0; i < lines.Count; i++)
                    {
                        History.Events.ThinkedAboutTargetEvent.Publish();
                        lineInfoDictionary.Add(i, lines[i]);
                    }

                    //WE NOW HAVE INFO DICTIONARY WHICH HAS LINE NUMBER AND CORRESPONDING LINE TEXT
                    //CREATE A NEW LINELIST WITH THIS CRITERIA WILL CREATE PHRASES WITH EACH LINE TEXT,
                    //AND LINEEDITS OBJECT FOR EACH LINE NUMBER + PHRASE.
                    var criteria2 = new Business.Criteria.LineInfosCriteria(languageText, lineInfoDictionary);
                    Model.Lines = await LineList.NewLineListAsync(criteria2);

                    //WE NOW HAVE A LIST OF LINEEDITS, EACH WITH A PHRASE WITH A SINGLE LINE OF TEXT AND LINE NUMBER.
                    //SET OUR MODEL.LINES TO THIS LINELIST
                    History.Events.ThinkedAboutTargetEvent.Publish();

                    #region SET SONG TITLE (IF NECESSARY)
                    //IF THE SONGTITLE IS EMPTY, THEN USE THE FIRST LINE OF THE SONG AS THE SONG TITLE
                    if (string.IsNullOrEmpty(Model.Title))
                    {
                        Model.Title = ViewViewModelResources.AutoTitlePrefix + Model.Lines.GetLine(0).Phrase.Text;
                    }
                    #endregion
                    History.Events.ThinkedAboutTargetEvent.Publish();

                    #region ADD METADATA TYPEISSONG

                    Model.AddMetadata(BusinessResources.MetadataKeyType,
                                      BusinessResources.MetadataValueTypeSong);

                    #endregion

                    #region SAVE THE ACTUAL SONG MODEL

                    //NOW WE CAN USE THE BASE SAVE
                    History.Events.ThinkedAboutTargetEvent.Publish();
                    await base.SaveAsync();

                    SongHasBeenSaved = true;
                    IsSaving         = false;
                    History.Events.ThinkedAboutTargetEvent.Publish();

                    #endregion

                    #endregion

                    #endregion

                    #endregion

                    #endregion
                }
                #endregion
            }
            finally
            {
                History.Events.ThinkedAboutTargetEvent.Publish(thinkId);
                //EnableNavigationRequestedEventMessage.Publish();
                DecrementApplicationBusyEventMessage.Publish("AddSongMultiLineTextEditViewModel.SaveAsync");
            }
        }
        public virtual async Task InitializeClientSeedDataSingleton()
        {
            if (ClientSeedDataIsInitialized)
            {
                return;
            }

            //UPDATE THE CLIENT SEEDDATA LANGUAGE IDS
            SeedData.Ton.EnglishLanguageDto.Id = _ServerEnglishLang.Id;
            SeedData.Ton.SpanishLanguageDto.Id = _ServerSpanishLang.Id;

            //UPDATE THE CLIENT SEEDDATA PHRASES

            if (_InitialAllPhrases == null)
            {
                _InitialAllPhrases = await PhraseList.GetAllAsync();
            }
            PhraseList allPhrases = null;

            allPhrases = _InitialAllPhrases;


            var serverHelloPhraseQuery = (from phrase in allPhrases
                                          where phrase.Text == SeedData.Ton.HelloText &&
                                          phrase.Language.Text == SeedData.Ton.EnglishText
                                          select phrase);
            PhraseEdit serverHelloPhrase = null;

            if (serverHelloPhraseQuery.Count() == 0) //we don't have the hello phrase in the db, so put it there
            {
                var phrase = allPhrases[0];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.HelloText;
                phrase.Language = _ServerEnglishLang;
                phrase.ApplyEdit();
                serverHelloPhrase = phrase;
            }
            else
            {
                serverHelloPhrase = serverHelloPhraseQuery.First();
            }


            var serverHolaPhraseQuery = (from phrase in allPhrases
                                         where phrase.Text == SeedData.Ton.HolaText &&
                                         phrase.Language.Text == SeedData.Ton.EnglishText
                                         select phrase);
            PhraseEdit serverHolaPhrase = null;

            if (serverHolaPhraseQuery.Count() == 0) //we don't have the Hola phrase in the db, so put it there
            {
                var phrase = allPhrases[1];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.HolaText;
                phrase.Language = _ServerSpanishLang;
                phrase.ApplyEdit();
                serverHolaPhrase = phrase;
            }
            else
            {
                serverHolaPhrase = serverHolaPhraseQuery.First();
            }

            var serverLongPhraseQuery = (from phrase in allPhrases
                                         where phrase.Text == SeedData.Ton.LongText &&
                                         phrase.Language.Text == SeedData.Ton.EnglishText
                                         select phrase);
            PhraseEdit serverLongPhrase = null;

            if (serverLongPhraseQuery.Count() == 0) //we don't have the Long phrase in the db, so put it there
            {
                var phrase = allPhrases[2];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.LongText;
                phrase.Language = _ServerEnglishLang;
                phrase.ApplyEdit();
                serverLongPhrase = phrase;
            }
            else
            {
                serverLongPhrase = serverLongPhraseQuery.First();
            }


            var serverDogPhraseQuery = (from phrase in allPhrases
                                        where phrase.Text == SeedData.Ton.DogText &&
                                        phrase.Language.Text == SeedData.Ton.EnglishText
                                        select phrase);
            PhraseEdit serverDogPhrase = null;

            if (serverDogPhraseQuery.Count() == 0) //we don't have the Dog phrase in the db, so put it there
            {
                var phrase = allPhrases[3];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.DogText;
                phrase.Language = _ServerSpanishLang;
                phrase.ApplyEdit();
                serverDogPhrase = phrase;
            }
            else
            {
                serverDogPhrase = serverDogPhraseQuery.First();
            }

            var validUserId = serverHelloPhrase.UserId;

            SeedData.Ton.GetTestValidUserDto().Id = validUserId;

            SeedData.Ton.HelloPhraseDto.Id = serverHelloPhrase.Id;
            SeedData.Ton.HolaPhraseDto.Id  = serverHolaPhrase.Id;
            SeedData.Ton.LongPhraseDto.Id  = serverLongPhrase.Id;
            SeedData.Ton.DogPhraseDto.Id   = serverDogPhrase.Id;

            SeedData.Ton.HelloPhraseDto.UserId = serverHelloPhrase.UserId;
            SeedData.Ton.HolaPhraseDto.UserId  = serverHolaPhrase.UserId;
            SeedData.Ton.LongPhraseDto.UserId  = serverLongPhrase.UserId;
            SeedData.Ton.DogPhraseDto.UserId   = serverDogPhrase.UserId;

            ClientSeedDataIsInitialized = true;
        }
Exemple #18
0
        public async Task GET_ALL_SET_NEW_LANGUAGE_SAVE_GET_CONFIRMNEWLANGUAGE()
        {
            var        allPhrasesCount = -1;
            PhraseEdit testPhrase      = null;
            PhraseEdit savedPhrase     = null;
            PhraseEdit gottenPhrase    = null;

            PhraseList allPhrases        = null;
            PhraseList savedAllPhrases   = null;
            PhraseList confirmAllPhrases = null;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                //LOAD--------------
                allPhrases = await PhraseList.GetAllAsync();

                allPhrasesCount = allPhrases.Count;

                testPhrase = (from phrase in allPhrases
                              where phrase.Language.Text == _ServerEnglishLang.Text
                              select phrase).First();

                //testPhrase is english

                //EDIT---------
                testPhrase.BeginEdit();
                testPhrase.Language = _ServerSpanishLang;
                testPhrase.ApplyEdit();

                //SAVE-------------
                savedAllPhrases = await allPhrases.SaveAsync();

                savedPhrase = (from phrase in savedAllPhrases
                               where phrase.Text == testPhrase.Text
                               select phrase).First();

                Assert.AreEqual(_ServerSpanishLang.Text, savedPhrase.Language.Text);
                Assert.AreEqual(_ServerSpanishLang.Id, savedPhrase.Language.Id);
                Assert.AreEqual(_ServerSpanishLang.Id, savedPhrase.LanguageId);

                //GET-----------
                gottenPhrase = await PhraseEdit.GetPhraseEditAsync(savedPhrase.Id);

                //CONFIRM----------
                //confirm language swap worked.
                Assert.AreEqual(_ServerSpanishLang.Text, gottenPhrase.Language.Text);
                Assert.AreEqual(_ServerSpanishLang.Id, gottenPhrase.Language.Id);
                Assert.AreEqual(_ServerSpanishLang.Id, gottenPhrase.LanguageId);
                //confirm we haven't glitched our data and magically doubled the size of our allPhrases.
                confirmAllPhrases = await PhraseList.GetAllAsync();

                Assert.AreEqual(allPhrasesCount, confirmAllPhrases.Count);
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsNotNull(allPhrases),
                    () => Assert.IsNotNull(confirmAllPhrases),

                    //KEEP THIS LAST IN THE CALLBACKS
                    () => Teardown()
                    );

                EnqueueTestComplete();
                isAsyncComplete = true;
            }
        }
 private void resetList()
 {
     EmotionList.Clear(); PhraseList.Clear(); ModelSentimentList.Clear();
 }
Exemple #20
0
        public async Task GET_ALL_EDIT_SAVE()
        {
            var  allPhrasesCount          = -1;
            bool phrasesCountStaysTheSame = false;
            var  text0         = "This is edited Text00000._save";
            var  text1         = "This is edited Text11111._save";
            var  text2         = "This is edited Text22222222222222222222222._save";
            var  containsText0 = false;
            var  containsText1 = false;
            var  containsText2 = false;

            PhraseList allPhrases   = null;
            PhraseList savedPhrases = null;


            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                allPhrases = await PhraseList.GetAllAsync();

                allPhrases[0].Text = text0;
                allPhrases[1].Text = text1;
                allPhrases[2].Text = text2;

                allPhrasesCount = allPhrases.Count;

                savedPhrases = await allPhrases.SaveAsync();

                phrasesCountStaysTheSame = allPhrasesCount == savedPhrases.Count;

                containsText0 = (from phrase in savedPhrases
                                 where phrase.Text == text0
                                 select phrase).Count() > 0;
                containsText1 = (from phrase2 in savedPhrases
                                 where phrase2.Text == text1
                                 select phrase2).Count() > 0;
                containsText2 = (from phrase3 in savedPhrases
                                 where phrase3.Text == text2
                                 select phrase3).Count() > 0;
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsNotNull(allPhrases),
                    () => Assert.IsNotNull(savedPhrases),
                    () => Assert.IsTrue(containsText0),
                    () => Assert.IsTrue(containsText1),
                    () => Assert.IsTrue(containsText2),
                    () => Assert.IsTrue(phrasesCountStaysTheSame),
                    () => Assert.IsTrue(allPhrasesCount > 0),
                    //KEEP THIS LAST IN THE CALLBACKS
                    () => Teardown()
                    );

                EnqueueTestComplete();
                isAsyncComplete = true;
            }
        }
        public async Task GET_ALL_PHRASES_THAT_CONTAIN_THE_LETTER_H_IN_ALL_LANGUAGES()
        {
            Guid       testId     = Guid.Empty;
            PhraseEdit testPhrase = null;

            //THE SEARCH TEXT WE ARE LOOKING FOR
            string textToLookFor = "h";

            //ASSUME TRUE
            bool allRetrievedPhrasesContainTheCorrectText = true;

            var isAsyncComplete = false;
            var hasError        = false;

            EnqueueConditional(() => isAsyncComplete);
            await Setup();

            try
            {
                var phrases = await PhraseList.GetAllContainingTextAsyncCaseInsensitive(textToLookFor);

                testId = phrases.First().Id;

                //CHECK TO SEE IF ALL THE PHRASES CONTAIN THE TEXT TO LOOK FOR, LIKE THEY ARE SUPPOSED TO
                for (int i = 0; i < phrases.Count; i++)
                {
                    var phrase = phrases[i];

                    //LOWERCASE THE TEXTS FOR THE CHECK, BECAUSE THE RESULTS ARE CASE-INSENSITIVE,
                    //BUT THE STRING.CONTAINS(TEXT) METHOD IS CASE-SENSITIVE
                    var lowercasePhraseText    = phrase.Text.ToLower();
                    var lowercaseTextToLookFor = textToLookFor.ToLower();

                    if (!lowercasePhraseText.Contains(lowercaseTextToLookFor))
                    {
                        //THIS SHOULDN'T HAPPEN
                        allRetrievedPhrasesContainTheCorrectText = false;
                    }
                }

                //JUST TO CHECK TO SEE THAT OUR RESULTS WERE AT LEAST ONE, AND THAT IT'S A VALID PHRASE
                testPhrase = await PhraseEdit.GetPhraseEditAsync(testId);
            }
            catch
            {
                hasError = true;
            }
            finally
            {
                EnqueueCallback(
                    () => Assert.IsFalse(hasError),
                    () => Assert.IsTrue(allRetrievedPhrasesContainTheCorrectText),
                    () => Assert.IsNotNull(testPhrase),
                    () => Assert.AreEqual(testId, testPhrase.Id)
                    );

                EnqueueTestComplete();
                Teardown();
                isAsyncComplete = true;
            }
        }
        //private LanguageEdit _ServerEnglishLang;
        //private LanguageEdit _ServerSpanishLang;

        public override async System.Threading.Tasks.Task Setup()
        {
            await base.Setup();

            //WE NEED TO UPDATE THE CLIENT SeedData.Ton IDS.
            LanguageList allLanguages = null;
            PhraseList   allPhrases   = null;

            if (_AllLanguages == null)
            {
                _AllLanguages = await LanguageList.GetAllAsync();
            }
            allLanguages = _AllLanguages;

            _ServerEnglishLang = (from language in _AllLanguages
                                  where language.Text == SeedData.Ton.EnglishText
                                  select language).First();

            SeedData.Ton.EnglishLanguageDto.Id = _ServerEnglishLang.Id;

            _ServerSpanishLang = (from language in _AllLanguages
                                  where language.Text == SeedData.Ton.SpanishText
                                  select language).First();

            SeedData.Ton.SpanishLanguageDto.Id = _ServerSpanishLang.Id;


            if (_InitialAllPhrases == null)
            {
                _InitialAllPhrases = await PhraseList.GetAllAsync();
            }
            allPhrases = _InitialAllPhrases;

            var serverHelloPhraseQuery = (from phrase in allPhrases
                                          where phrase.Text == SeedData.Ton.HelloText &&
                                          phrase.Language.Text == SeedData.Ton.EnglishText
                                          select phrase);
            PhraseEdit serverHelloPhrase = null;

            if (serverHelloPhraseQuery.Count() == 0) //we don't have the hello phrase in the db, so put it there
            {
                var phrase = allPhrases[0];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.HelloText;
                phrase.Language = _ServerEnglishLang;
                phrase.ApplyEdit();
                serverHelloPhrase = phrase;
            }
            else
            {
                serverHelloPhrase = serverHelloPhraseQuery.First();
            }


            var serverHolaPhraseQuery = (from phrase in allPhrases
                                         where phrase.Text == SeedData.Ton.HolaText &&
                                         phrase.Language.Text == SeedData.Ton.EnglishText
                                         select phrase);
            PhraseEdit serverHolaPhrase = null;

            if (serverHolaPhraseQuery.Count() == 0) //we don't have the Hola phrase in the db, so put it there
            {
                var phrase = allPhrases[1];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.HolaText;
                phrase.Language = _ServerSpanishLang;
                phrase.ApplyEdit();
                serverHolaPhrase = phrase;
            }
            else
            {
                serverHolaPhrase = serverHolaPhraseQuery.First();
            }

            var serverLongPhraseQuery = (from phrase in allPhrases
                                         where phrase.Text == SeedData.Ton.LongText &&
                                         phrase.Language.Text == SeedData.Ton.EnglishText
                                         select phrase);
            PhraseEdit serverLongPhrase = null;

            if (serverLongPhraseQuery.Count() == 0) //we don't have the Long phrase in the db, so put it there
            {
                var phrase = allPhrases[2];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.LongText;
                phrase.Language = _ServerEnglishLang;
                phrase.ApplyEdit();
                serverLongPhrase = phrase;
            }
            else
            {
                serverLongPhrase = serverLongPhraseQuery.First();
            }

            var serverDogPhraseQuery = (from phrase in allPhrases
                                        where phrase.Text == SeedData.Ton.DogText &&
                                        phrase.Language.Text == SeedData.Ton.EnglishText
                                        select phrase);
            PhraseEdit serverDogPhrase = null;

            if (serverDogPhraseQuery.Count() == 0) //we don't have the Dog phrase in the db, so put it there
            {
                var phrase = allPhrases[3];
                phrase.BeginEdit();
                phrase.Text     = SeedData.Ton.DogText;
                phrase.Language = _ServerSpanishLang;
                phrase.ApplyEdit();
                serverDogPhrase = phrase;
            }
            else
            {
                serverDogPhrase = serverDogPhraseQuery.First();
            }

            var validUserId = serverHelloPhrase.UserId;

            SeedData.Ton.GetTestValidUserDto().Id = validUserId;

            SeedData.Ton.HelloPhraseDto.Id = serverHelloPhrase.Id;
            SeedData.Ton.HolaPhraseDto.Id  = serverHolaPhrase.Id;
            SeedData.Ton.LongPhraseDto.Id  = serverLongPhrase.Id;
            SeedData.Ton.DogPhraseDto.Id   = serverDogPhrase.Id;

            SeedData.Ton.HelloPhraseDto.UserId = serverHelloPhrase.UserId;
            SeedData.Ton.HolaPhraseDto.UserId  = serverHolaPhrase.UserId;
            SeedData.Ton.LongPhraseDto.UserId  = serverLongPhrase.UserId;
            SeedData.Ton.DogPhraseDto.UserId   = serverDogPhrase.UserId;

            Assert.AreNotEqual(Guid.Empty, SeedData.Ton.EnglishId);
            Assert.AreNotEqual(Guid.Empty, SeedData.Ton.SpanishId);
            Assert.IsTrue(allLanguages.Count > 0);
        }
Exemple #23
0
        /// <summary>
        /// When the viewmodel is shown, we know we are the entity that started it.  We should
        /// publish an event saying we are studying an entire line.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        //private void ViewModelShownWhenStudyingAnEntireLine(object sender, EventArgs e)
        //{
        //  var viewModel = (IStudyItemViewModelBase)sender;
        //  var reviewMethodId = viewModel.ReviewMethodId;
        //  var reviewingLineEvent = new History.Events.ReviewingLineEvent(_Target, reviewMethodId);
        //  HistoryPublisher.Ton.PublishEvent(reviewingLineEvent);
        //}

        private async Task PopulateStudiersWithAggregatePhraseTexts()
        {
            if (_AbortIsFlagged)
            {
                return;
            }
            _Studiers.Clear();
            _LastStudiedIndex = -1;

            #region IF WE ONLY HAVE ONE AGGREGATE PHRASE TEXT, THEN POPULATE OUR STUDIER WITH OUR TARGET LINE

            if (AggregatePhraseTexts.Count == 1)
            {
                var studier = new DefaultPhraseMeaningStudier();
                #region Thinking (try..)
                var targetId = Guid.NewGuid();
                History.Events.ThinkingAboutTargetEvent.Publish(targetId);
                try
                {
                    #endregion
                    await studier.InitializeForNewStudySessionAsync(_Target.Phrase);

                    #region (...finally) Thinked
                }
                finally
                {
                    History.Events.ThinkedAboutTargetEvent.Publish(targetId);
                }
                #endregion
                _Studiers.Add(0, studier);
                return;
            }

            #endregion

            var phraseTextsCriteria =
                new Business.Criteria.PhraseTextsCriteria(_Target.Phrase.Language.Text, AggregatePhraseTexts);
            PhraseList phraseList = null;
            #region Thinking (try..)
            var targetId2 = Guid.NewGuid();
            History.Events.ThinkingAboutTargetEvent.Publish(targetId2);
            try
            {
                #endregion
                phraseList = await PhraseList.NewPhraseListAsync(phraseTextsCriteria);

                #region (...finally) Thinked
            }
            finally
            {
                History.Events.ThinkedAboutTargetEvent.Publish(targetId2);
            }
            #endregion
            if (_AbortIsFlagged)
            {
                return;
            }

            List <PhraseEdit> unknownPhraseEdits = new List <PhraseEdit>();
            for (int i = 0; i < AggregatePhraseTexts.Count; i++)
            {
                if (_AbortIsFlagged)
                {
                    return;
                }
                var results = from phrase in phraseList
                              where phrase.Text == AggregatePhraseTexts[i]
                              select phrase;
                unknownPhraseEdits.Insert(i, results.First());
            }

            //WE NOW HAVE AN ORDERED LIST OF KNOWN AND UNKNOWN AGGREGATE PHRASEEDITS.
            //WE NEED TO FIND, AND KEEP IN RELATIVE ORDER, ONLY THE UNKNOWN PHRASEEDITS.
            //EACH PHRASE EDIT IS THE SAME INDEX AS ITS PHRASETEXT COUNTERPART.

            //WE NEED TO FIND THE COUNT OF UNKNOWN TEXTS FIRST, TO INCREMENT OUR COUNTER FOR ASYNC FUNCTIONALITY.
            int unknownCount = 0;
            for (int i = 0; i < AggregatePhraseTexts.Count; i++)
            {
                if (_AbortIsFlagged)
                {
                    return;
                }

                var phraseText = AggregatePhraseTexts[i];
                if (!IsPhraseKnown(phraseText))
                {
                    unknownCount++;
                }
            }

            //UNKNOWNRELATIVEORDER: UNKNOWN IN THAT OUR PHRASE IS UNKNOWN.  RELATIVE ORDER MEANS
            //THE ORDER/POSITION OF THIS PHRASE RELATIVE TO THE OTHER _UNKNOWN_ PHRASES.
            var unknownRelativeOrder = -1;
            int initializedCount     = 0;
            for (int i = 0; i < AggregatePhraseTexts.Count; i++)
            {
                if (_AbortIsFlagged)
                {
                    return;
                }

                var phraseText = AggregatePhraseTexts[i];
                if (IsPhraseKnown(phraseText))
                {
                    continue;
                }

                //PHRASE IS UNKNOWN, SO INC OUR RELATIVE ORDER AND ADD THE STUDIER TO STUDIERS, INITIALIZING EACH STUDIER.
                unknownRelativeOrder++;
                var studier = new DefaultPhraseMeaningStudier();
                #region Thinking (try..)
                var targetId3 = Guid.NewGuid();
                History.Events.ThinkingAboutTargetEvent.Publish(targetId3);
                try
                {
                    #endregion
                    await studier.InitializeForNewStudySessionAsync(unknownPhraseEdits[i]);

                    #region (...finally) Thinked
                }
                finally
                {
                    History.Events.ThinkedAboutTargetEvent.Publish(targetId3);
                }
                #endregion
                if (_AbortIsFlagged)
                {
                    return;
                }

                _Studiers.Add(unknownRelativeOrder, studier);
                initializedCount++;
                //IF WE HAVE INITIALIZED ALL OF OUR UNKNOWN PHRASES, THEN WE ARE DONE AND CAN CALL CALLBACK.
                if (initializedCount == unknownCount)
                {
                    return;
                }
            }

            //THIS LINE IS ENTIRELY KNOWN, SO INITIALIZE A NEW STUDIER WITH THE ENTIRE LINE.
            if (unknownCount == 0)
            {
                var studier = new DefaultPhraseMeaningStudier();

                #region Thinking (try..)
                var targetId4 = Guid.NewGuid();
                History.Events.ThinkingAboutTargetEvent.Publish(targetId4);
                try
                {
                    #endregion
                    await studier.InitializeForNewStudySessionAsync(_Target.Phrase);

                    #region (...finally) Thinked
                }
                finally
                {
                    History.Events.ThinkedAboutTargetEvent.Publish(targetId4);
                }
                #endregion
                _Studiers.Add(0, studier);
                return;
            }
        }
Exemple #24
0
        private void PopulateItems(PhraseList phrases)
        {
            if (IsPopulating && AbortIsFlagged)
            {
                return;
            }

            BackgroundWorker worker = new BackgroundWorker();

            worker.DoWork += ((s, r) =>
            {
                //IsBusy = true;
                IsPopulating = true;


                Items.Clear();
                var filteredPhrases = FilterPhrases(phrases);

                #region //Sort (not in use...too slow)

                //#region Sort PhraseEdit by Text Comparison (Comparison<PhraseEdit> comparison = (a, b) =>)

                //Comparison<PhraseEdit> comparison = (a, b) =>
                //{
                //  //WE'RE GOING TO TEST CHAR ORDER IN ALPHABET
                //  string aText = a.Text.ToLower();
                //  string bText = b.Text.ToLower();

                //  //IF THEY'RE THE SAME TITLES IN LOWER CASE, THEN THEY ARE EQUAL
                //  if (aText == bText)
                //    return 0;

                //  //ONLY NEED TO TEST CHARACTERS UP TO LENGTH
                //  int shorterTitleLength = aText.Length;
                //  bool aIsShorter = true;
                //  if (bText.Length < shorterTitleLength)
                //  {
                //    shorterTitleLength = bText.Length;
                //    aIsShorter = false;
                //  }

                //  int result = 0; //assume a and b are equal (though we know they aren't if we've reached this point)

                //  for (int i = 0; i < shorterTitleLength; i++)
                //  {
                //    if (aText[i] < bText[i])
                //    {
                //      result = -1;
                //      break;
                //    }
                //    else if (aText[i] > bText[i])
                //    {
                //      result = 1;
                //      break;
                //    }
                //  }

                //  //IF THEY ARE STILL EQUAL, THEN THE SHORTER PRECEDES THE LONGER
                //  if (result == 0)
                //  {
                //    if (aIsShorter)
                //      result = -1;
                //    else
                //      result = 1;
                //  }

                //  return result;
                //};

                //#endregion
                //filteredPhrases.Sort(comparison);
                #endregion

                int counter = 0;
                int iterationsBetweenComeUpForAir = 20;
                int totalCount = filteredPhrases.Count();
                ProgressMaximum = totalCount;

                Guid thinkId = Guid.NewGuid();
                History.Events.ThinkingAboutTargetEvent.Publish(thinkId);
                foreach (var phraseEdit in filteredPhrases)
                {
                    var itemViewModel = Services.Container.GetExportedValue <ViewPhrasesItemViewModel>();
                    itemViewModel.PropertyChanged +=
                        new System.ComponentModel.PropertyChangedEventHandler(HandleItemViewModelChanged);
                    itemViewModel.Model = phraseEdit;
                    Items.Add(itemViewModel);
                    counter++;
                    ProgressValue = counter;
                    if (counter % iterationsBetweenComeUpForAir == 0)
                    {
                        if (AbortIsFlagged)
                        {
                            AbortIsFlagged = false;
                            ProgressValue = 0;
                            break;
                        }
                    }

                    //PING THINKING
                    History.Events.ThinkedAboutTargetEvent.Publish(Guid.Empty);
                }

                IsPopulating = false;

                //TELL HISTORY WE'RE DONE THINKING
                History.Events.ThinkedAboutTargetEvent.Publish(thinkId);

                //if (batch.Count > 0)
                //Items.AddRange(batch);
            });

            worker.RunWorkerAsync();
        }