1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111: 112: 113: 114: 115: 116: 117: 118: 119: 120: 121: 122: 123: 124: 125: 126: 127: 128: 129: 130: 131: 132: 133: 134: 135: 136: 137: 138:
| public class Multiplikation { public int Mul(int x, int y) { var anzahl = AnzahlMöglicheTeilungen(x); var zahlenX = ZahlenErmitteln(x, anzahl, ZahlHalbieren); var zahlenY = ZahlenErmitteln(y, anzahl, ZahlVerdoppeln); var zahlen = WerteVergleichen(zahlenX, zahlenY); return ZahlenAddieren(zahlen); }
internal int AnzahlMöglicheTeilungen(int x) { return Convert.ToInt16(Math.Log(Convert.ToDouble(x)) / Math.Log(2.0)); }
internal IEnumerable<int> ZahlenErmitteln(int wert, int anzahl, Func<int, int>NeuerWert) { IList<int> liste = new List<int>(); int i = 0; while (i < anzahl) { liste.Add(wert); wert = NeuerWert(wert); i++; } return liste; }
internal int ZahlHalbieren(int wert) { return wert / 2; }
internal int ZahlVerdoppeln(int wert) { return wert * 2; }
internal IEnumerable<int> WerteVergleichen(IEnumerable<int> x, IEnumerable<int> y) { List<int> liste = new List<int>(); for (int i = 0; i < x.Count(); i++) { if (x.ElementAt(i) % 2 != 0) { liste.Add(y.ElementAt(i)); } } return liste; }
internal int ZahlenAddieren(IEnumerable<int> zahlen) { return zahlen.Sum(); } }
[TestClass] public class MultiplikationTests { Multiplikation sut; int[] x; int[] y;
[TestInitialize] public void Init() { sut = new Multiplikation(); x = new int[] { 47, 23, 11, 5, 2, 1 }; y = new int[] { 42, 84, 168, 336, 672, 1344 }; }
[TestMethod] public void DoppelterWertEinerGanzzahl() { var erg = sut.ZahlVerdoppeln(8); Assert.AreEqual(16, erg); }
[TestMethod] public void HalbierterWertEinerGanzzahl() { var erg = sut.ZahlHalbieren(8); Assert.AreEqual(4, erg); }
[TestMethod] public void AnzahlTeilungenGanzzahlBisErgebnisIst1() { var erg = sut.AnzahlMöglicheTeilungen(47); Assert.AreEqual(6, erg); }
[TestMethod] public void ZahlenErmittelnFürX() { var erg = sut.ZahlenErmitteln(47, 6, sut.ZahlHalbieren); CollectionAssert.AreEqual(x, erg.ToArray()); }
[TestMethod] public void ZahlenErmittelnFürY() { var erg = sut.ZahlenErmitteln(42, 6, sut.ZahlVerdoppeln); CollectionAssert.AreEqual(y, erg.ToArray()); }
[TestMethod] public void WennWerteXgeradeWertInYnichtBeachten() { var erg = sut.WerteVergleichen(x, y); Assert.AreEqual(5, erg.Count()); CollectionAssert.AreEqual(new int[] { 42, 84, 168, 336, 1344 }, erg.ToArray()); }
[TestMethod] public void ListeMitGanzzahlenAddieren() { var erg = sut.ZahlenAddieren(new int[] { 2, 3, 5, 45 }); Assert.AreEqual(55, erg); }
[TestMethod] public void Integrationstest() { var erg = sut.Mul(47, 42); Assert.AreEqual(1974, erg); }
[TestCleanup] public void Cleanup() { sut = null; } } |