Ejemplo n.º 1
0
        public void DivisionX(double firstValue, double expected)
        {
            var calculator = new DivisionX();
            var actualResult = calculator.Calculate(firstValue);

            Assert.AreEqual(expected, actualResult);
        }
Ejemplo n.º 2
0
        public static Flag LoadFromFile(string filename)
        {
            if (string.IsNullOrEmpty(filename))
            {
                throw new OperationCanceledException();
            }

            var name      = string.Empty;
            var ratio     = new Ratio(3, 2);
            var gridRatio = new Ratio(3, 2);

            string divisionType   = "grid";
            Color  divisionColor1 = Colors.White;
            Color  divisionColor2 = Colors.White;
            Color  divisionColor3 = Colors.White;
            int    divisionVal1   = 1;
            int    divisionVal2   = 1;
            int    divisionVal3   = 1;

            var overlays = new List <TempOverlay>();

            var line = string.Empty;

            try
            {
                using (var sr = new StreamReader(filename))
                {
                    bool isDivision   = false;
                    int  overlayIndex = -1;

                    while ((line = sr.ReadLine()) != null)
                    {
                        switch (line.Split('=')[0].ToLower())
                        {
                        case "name":
                            name = line.Split('=')[1];
                            break;

                        case "ratio":
                            var ratioStrings = line.Split('=')[1].Split(':');
                            ratio = new Ratio(int.Parse(ratioStrings[1]), int.Parse(ratioStrings[0]));
                            break;

                        case "gridsize":
                            var data = line.Split('=')[1].Split(':');
                            gridRatio = new Ratio(int.Parse(data[1]), int.Parse(data[0]));
                            break;

                        case "division":
                            isDivision = true;
                            break;

                        case "overlay":
                            isDivision = false;
                            overlayIndex++;
                            overlays.Add(new TempOverlay());
                            break;

                        case "type":
                            if (isDivision)
                            {
                                divisionType = line.Split('=')[1];
                            }
                            else
                            {
                                overlays[overlayIndex].Type = line.Split('=')[1];
                            }
                            break;

                        case "color1":
                            divisionColor1 = ParseColor(line.Split('=')[1]);
                            break;

                        case "color2":
                            divisionColor2 = ParseColor(line.Split('=')[1]);
                            break;

                        case "color3":
                            divisionColor3 = ParseColor(line.Split('=')[1]);
                            break;

                        case "color":
                            overlays[overlayIndex].Color = ParseColor(line.Split('=')[1]);
                            break;

                        case "size1":
                            if (isDivision)
                            {
                                divisionVal1 = int.Parse(line.Split('=')[1]);
                            }
                            else
                            {
                                overlays[overlayIndex].Values[0] = GetDoubleFromString(line.Split('=')[1]);
                            }
                            break;

                        case "size2":
                            if (isDivision)
                            {
                                divisionVal2 = int.Parse(line.Split('=')[1]);
                            }
                            else
                            {
                                overlays[overlayIndex].Values[1] = GetDoubleFromString(line.Split('=')[1]);
                            }
                            break;

                        case "size3":
                            if (isDivision)
                            {
                                divisionVal3 = int.Parse(line.Split('=')[1]);
                            }
                            else
                            {
                                overlays[overlayIndex].Values[2] = GetDoubleFromString(line.Split('=')[1]);
                            }
                            break;

                        case "size4":
                            overlays[overlayIndex].Values[3] = GetDoubleFromString(line.Split('=')[1]);
                            break;

                        case "size5":
                            overlays[overlayIndex].Values[4] = GetDoubleFromString(line.Split('=')[1]);
                            break;

                        case "size6":
                            overlays[overlayIndex].Values[5] = GetDoubleFromString(line.Split('=')[1]);
                            break;

                        case "size7":
                            overlays[overlayIndex].Values[6] = GetDoubleFromString(line.Split('=')[1]);
                            break;

                        case "size8":
                            overlays[overlayIndex].Values[7] = GetDoubleFromString(line.Split('=')[1]);
                            break;

                        case "path":
                            overlays[overlayIndex].Path = line.Split('=')[1];
                            break;

                        case "stroke":
                            overlays[overlayIndex].StrokeColor = ParseColor(line.Split('=')[1]);
                            break;
                        }
                    }
                }

                Division division;
                switch (divisionType)
                {
                case "fesses":
                    division = new DivisionFesses(divisionColor1, divisionColor2, divisionColor3, divisionVal1, divisionVal2,
                                                  divisionVal3);
                    break;

                case "pales":
                    division = new DivisionPales(divisionColor1, divisionColor2, divisionColor3, divisionVal1, divisionVal2,
                                                 divisionVal3);
                    break;

                case "bends forward":
                    division = new DivisionBendsForward(divisionColor1, divisionColor2);
                    break;

                case "bends backward":
                    division = new DivisionBendsBackward(divisionColor1, divisionColor2);
                    break;

                case "bends both":
                    division = new DivisionX(divisionColor1, divisionColor2);
                    break;

                default:
                    division = new DivisionGrid(divisionColor1, divisionColor2, divisionVal1, divisionVal2);
                    break;
                }

                return(new Flag(name, ratio, gridRatio, division,
                                overlays.Select(o => o.ToOverlay(gridRatio.Width, gridRatio.Height, Path.GetDirectoryName(filename)))));
            }
            catch (Exception ex)
            {
                throw new FileLoadException(line, ex);
            }
        }
Ejemplo n.º 3
0
 public void ErrorTest()
 {
     var calculator = new DivisionX();
     Assert.Throws<Exception>((() => calculator.Calculate(0)));
 }