public void Czy_Wywoluje_Znajdz_Prawidlowo() { //Ustal Mock <INajlepszaWymianaNalezosciPienieznejZnajdywacz> znajdywacz_Mock = Stworz_NajlepszaWymianaNalezosciPienieznejZnajdywacz_Mock.Stworz_Weryfikator_Mock(); IFabrykaDlaTabelaNaleznosciPienieznychObliczacz fabryka = Stworz_FabrykaDlaTabelaNaleznosciObliczaczPienieznych_Mock.Stworz_Weryfikator_Mock(znajdywacz_Mock); Mock <ITablicaOsobPienieznaKoncowaPrefabrykator> prefabrykator_Mock = Stworz_TablicaOsobKoncowaPrefabrykator_Mock.Stworz_Weryfikator_Mock(); ITabelaNaleznosciPienieznychObliczacz Obliczacz = Stworz_TabelaNaleznosciPienieznychObliczacz.Stworz(fabryka, prefabrykator_Mock.Object); ITablicaOsobPienieznych tablicaOsob = Stworz_TablicaOsobPienieznych_Mock.Stworz_Mock(); KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosciWylicznik = default(KryteriumWyboruTabeliNaleznosciWylicznik); //Dzialaj Obliczacz.ObliczNaleznosci(tablicaOsob, kryteriumWyboruTabeliNaleznosciWylicznik); //Asercja znajdywacz_Mock.Verify(znajdywacz => znajdywacz.Znajdz(It.IsAny <ITablicaOsobPienieznych>()), Times.Once); prefabrykator_Mock.Verify(prefabrykator => prefabrykator.StworzTablicaKoncowa(It.IsAny <ITablicaOsobPienieznych>()), Times.Once); }
private ITabelaNaleznosciPienieznej Znajdz(ITablicaOsobPienieznych tablicaOsob, long staraRozniceDoPoczatkowej) { ITabelaNaleznosciPienieznej najlepszaTabelaNaleznosci = fabryka.StworzTabelaNaleznosciPienieznejNull(); foreach (IOsobaSwiadczeniePieniezne osobaKorzen in tablicaOsob) { foreach (IOsobaSwiadczeniePieniezne osobaPotomek in tablicaOsob) { INaleznoscPieniezna roznicaNaleznosci = najwiekszaMozliwaNaleznoscDoWymianyUstalacz.UstalNaleznoscDoWymiany(tablicaOsob, osobaKorzen, osobaPotomek); if (roznicaNaleznosci.Swiadczenie == 0) { continue; } ITablicaOsobPienieznych nowaTablicaOsob = tablicaOsob.PrzekazNaleznosciPomiedzyOsobami(osobaKorzen, osobaPotomek, roznicaNaleznosci); long rozniceDoPoczatkowej = rozniceDoStanuKwitaSumator.SumujRoznice(nowaTablicaOsob); if (rozniceDoPoczatkowej >= staraRozniceDoPoczatkowej) { continue; } ITabelaNaleznosciPienieznej NowaTabelaNaleznosci = ZnajdzTabeleNaleznosciDlaNoweTablicyOsob(nowaTablicaOsob, rozniceDoPoczatkowej); NowaTabelaNaleznosci.DodajWymianeNalzenosciUaktualniajacKryterium(roznicaNaleznosci, fabryka.StworzPolozenieWTabeliNaleznosci(osobaPotomek.ID, osobaKorzen.ID)); najlepszaTabelaNaleznosci = najlepszaTabelaNaleznosci.ZwrocLepszeKryterium(NowaTabelaNaleznosci); } } return(najlepszaTabelaNaleznosci); }
private ITabelaNaleznosciPienieznej ZnajdzTabeleNaleznosciDlaNoweTablicyOsob(ITablicaOsobPienieznych nowaTablicaOsob, long rozniceDoPoczatkowej) { if (rozniceDoPoczatkowej == 0) { return(fabryka.StworzStartowaTabelaNaleznosciPienieznej()); } return(Znajdz(nowaTablicaOsob, rozniceDoPoczatkowej)); }
public ITabelaNaleznosciPienieznejZwrotna ObliczNaleznosci(ITablicaOsobPienieznych tablicaOsob, KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci) { ITablicaOsobPienieznych koncowaTablicaOsob = tablicaOsobKoncowaPrefabrykator.StworzTablicaKoncowa(tablicaOsob); INajlepszaWymianaNalezosciPienieznejZnajdywacz znajdywacz = fabryka.StworzNajlepszaWymianaNalezosciPienieznejZnajdywacz(koncowaTablicaOsob, kryteriumWyboruTabeliNaleznosci); return(znajdywacz.Znajdz(tablicaOsob)); }
public void Czy_StworzTablicaKoncowa_Stworza_Prawidlowo(int[] tabelaSwiadczenPoczatkowa, int[] tabelaSwiadczenOczekiwana) { //Ustal ITablicaOsobPienieznaKoncowaPrefabrykator tablicaosobKoncowaPrefabrykator = Stworz_TablicaOsobPienieznaKoncowaPrefabrykator.Stworz(); ITablicaOsobPienieznych tablicaOsobPienieznychPoczatkowa = Stworz_TablicaOsobPienieznych.Stworz(tabelaSwiadczenPoczatkowa); //Dzialaj ITablicaOsobPienieznych tablicaOsobPienieznychKoncowa = tablicaosobKoncowaPrefabrykator.StworzTablicaKoncowa(tablicaOsobPienieznychPoczatkowa); //Asercja Assert.Collection(tablicaOsobPienieznychKoncowa, osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[0], osoba); }, osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[1], osoba); }, osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[2], osoba); }, osoba => { DowiedzRownosci(tabelaSwiadczenOczekiwana[3], osoba); }); }
public void Czy_Wywoluje_Znajdz_Prawidlowo() { //Ustal Mock <ITabelaNaleznosciPienieznychObliczacz> obliczacz_Mock = Stworz_TabelaNaleznosciPienieznychObliczacz_Mock.Stworz_Weryfikator_Mock(); Mock <IFabrykaDlaObliczaczTabeliNaleznosciProkurent> fabryka = Stworz_FabrykaDlaObliczaczTabeliNaleznosciProkurent_Mock.Stworz_Weryfikator_Mock(obliczacz_Mock); IObliczaczTabeliNaleznosciProkurent Obliczacz = Stworz_ObliczaczTabeliNaleznosciProkurent.Stworz(fabryka.Object); ITablicaOsobPienieznych tablicaOsob = Stworz_TablicaOsobPienieznych_Mock.Stworz_Mock(); KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosciWylicznik = default(KryteriumWyboruTabeliNaleznosciWylicznik); //Dzialaj Obliczacz.ObliczNaleznosci(tablicaOsob, kryteriumWyboruTabeliNaleznosciWylicznik); //Asercja obliczacz_Mock.Verify(obliczacz => obliczacz.ObliczNaleznosci(It.IsAny <ITablicaOsobPienieznych>(), It.IsAny <KryteriumWyboruTabeliNaleznosciWylicznik>()), Times.Once); fabryka.Verify(_fabryka => _fabryka.StworzObliczaczTabeliNaleznosciPienieznych(), Times.Once); }
public ITablicaOsobPienieznych StworzTablicaKoncowa(ITablicaOsobPienieznych tablicaOsob) { long sumaNaleznosci = 0; foreach (IOsobaSwiadczeniePieniezne osoba in tablicaOsob) { sumaNaleznosci += osoba.Wplata.Swiadczenie; } byte naIleCzesci = tablicaOsob.WezIloscOsob; IOsobaPieniezna[] szeragOsob = new IOsobaPieniezna[naIleCzesci]; int swiadczenieKawalka = (int)(sumaNaleznosci / naIleCzesci); if (sumaNaleznosci < 0) { swiadczenieKawalka--; } byte iloscCoDostaneiWiecej = (byte)(sumaNaleznosci - (long)(swiadczenieKawalka * naIleCzesci)); bool czyObniznoneFlaga = false; foreach (IOsobaPieniezna osoba in tablicaOsob.Reverse()) { if (!czyObniznoneFlaga && iloscCoDostaneiWiecej++ >= naIleCzesci) { swiadczenieKawalka++; czyObniznoneFlaga = true; } szeragOsob[osoba.ID] = osoba.ZmienWplate(fabrykaNaleznosci.StworzNaleznosc(swiadczenieKawalka)); } return(fabrykaTablicaOsobPienieznych.StworzTablicaOsob(szeragOsob)); }
public INajlepszaWymianaNalezosciPienieznejZnajdywacz StworzNajlepszaWymianaNalezosciPienieznejZnajdywacz(ITablicaOsobPienieznych koncowaTablicaOsob, KryteriumWyboruTabeliNaleznosciWylicznik kryteriumWyboruTabeliNaleznosci) { INajwiekszaMozliwaNaleznoscPienieznaDoWymianyUstalacz ustalacz = StworzNajwiekszaMozliwaNaleznoscDoWymianyUstalacz(koncowaTablicaOsob); IRozniceDoStanuKwitaNaleznosciPienieznychSumator sumator = StworzRozniceDoStanuKwitaNaleznosciPienieznychSumator(koncowaTablicaOsob); IFabrykaDlaNajlepszaWymianaNalezosciPienieznejZnajdywaczFasada fasadaFabryki = StworzFasadaFabrykiDlaNajlepszaWymianaNalezosciPienieznejZnajdywacz(koncowaTablicaOsob.WezIloscOsob, kryteriumWyboruTabeliNaleznosci); return(new NajlepszaWymianaNalezosciPienieznejZnajdywacz(fasadaFabryki, ustalacz, sumator)); }
public ITabelaNaleznosciPienieznejZwrotna Znajdz(ITablicaOsobPienieznych tablicaOsob) { return(Znajdz(tablicaOsob, rozniceDoStanuKwitaSumator.SumujRoznice(tablicaOsob))); }