Пример #1
0
 public void SetUp()
 {
     center     = new Point(0, 0);
     layouter   = new CircularCloudLayouter(center);
     rectangles = new List <Rectangle>();
     size       = CloudLayouterUtilities.GetRandomSize(5, 100, 5, 100);
 }
        public void PutNextRectangle_IncorrectPlacement()
        {
            _layout = GetIncorrectRectanglePlacement();
            var result = IsRectanglesIntersect(_layout.Rectangles[0], _layout.Rectangles[1]);

            result.Should().BeFalse();
        }
Пример #3
0
        public void Ctor_CorrectCenter_CreatesObject()
        {
            var center = new Point(8, 10);
            var cloud  = new CircularCloudLayouter(center, new SimpleRadialAlgorithm());

            Assert.AreEqual(cloud.Center, center);
        }
 public void SetUp()
 {
     center   = new Point(300, 300);
     layouter = new CircularCloudLayouter(center);
     layouter.PutNextRectangle(new Size(20, 10));
     layouter.PutNextRectangle(new Size(20, 10));
 }
Пример #5
0
        public int[] alwaysPutFirstRectangle_atCenter(int pointX, int pointY)
        {
            cloudLayouter = new CircularCloudLayouter(new Point(pointX, pointY));
            var rectangle = cloudLayouter.PutNextRectangle(new Size(50, 50));

            return(new [] { rectangle.Location.X, rectangle.Location.Y });
        }
        public void PutNextRectangle(int width, int height)
        {
            _layout = new CircularCloudLayouter(new Point(0, 0));
            var rectangle = _layout.PutNextRectangle(new Size(width, height));

            rectangle.Should().BeEquivalentTo(new Rectangle(0, height, width, height));
        }
Пример #7
0
 public void SetUp()
 {
     imageWidth  = 500;
     imageHeight = 500;
     center      = new Point(imageWidth / 2, imageHeight / 2);
     layouter    = new CircularCloudLayouter(new Point(center.X, center.Y));
 }
Пример #8
0
        public void PutNextRectangle_LocateFirstRectangle_OnSpecifiedByYCenter([ValueSource(nameof(cloudCenters))] Point center)
        {
            var circularCloudLayouter = new CircularCloudLayouter(center);

            rectangles.Add(circularCloudLayouter.PutNextRectangle(new Size(31, 42)));
            rectangles[0].Y.Should().Be(center.Y - 42 / 2);
        }
Пример #9
0
        public void SetUp()
        {
            var spiral = new Spiral(new SpiralSettings());

            center   = spiral.GetCenter();
            layouter = new CircularCloudLayouter(spiral);
        }
Пример #10
0
        public void PlaceFirstRectangleToCentre_WhenCentrePointIs(int cx, int cy)
        {
            layouter = new CircularCloudLayouter(new Vector(cx, cy));
            var rect = layouter.PutNextRectangle(new Size(100, 20));

            rect.Centre.Should().Be(layouter.Centre);
        }
Пример #11
0
 public void Init()
 {
     radius            = double.MinValue;
     rectanglesInCloud = new List <Rectangle>();
     center            = new Point(23, 32);
     layouter          = new CircularCloudLayouter(center);
 }
Пример #12
0
        public void PutNextRectangle_ShouldPlaceRectanglesTightly_WhenManyRectanglesWithDifferentSize(int rectanglesCount)
        {
            var layouter = new CircularCloudLayouter(center);
            var sizes    = new List <Size>();
            var rnd      = new Random();

            for (var i = 0; i < rectanglesCount; i++)
            {
                var width  = rnd.Next(10);
                var height = rnd.Next(10);
                sizes.Add(new Size(width, height));
            }

            rectangles = sizes.Select(s => layouter.PutNextRectangle(s)).ToList();

            foreach (var rectangle in rectangles)
            {
                foreach (var closerRectangle in RectangleUtils.GetRectanglesThatCloserToPoint(
                             center, rectangle, 1))
                {
                    rectangles
                    .Where(r => r != rectangle)
                    .Select(r => RectangleUtils.RectanglesAreIntersected(r, closerRectangle))
                    .Should()
                    .Contain(true);
                }
            }
        }
        public void PutNextRectangle_OnNegativeSize_ShouldThrowArgExcept(int width, int height)
        {
            var    cloudLayouter = new CircularCloudLayouter();
            Action action        = () => cloudLayouter.PutNextRectangle(new Size(width, height));

            action.Should().Throw <ArgumentException>();
        }
Пример #14
0
        public void AlwaysFailedTest()
        {
            var imageCenter = new Point(VisualizationImageSize.Width / 2,
                                        VisualizationImageSize.Height / 2);
            var cloudLayouter = new CircularCloudLayouter(imageCenter);

            var randomizer       = TestContext.CurrentContext.Random;
            var rectangleResults = Enumerable.Range(0, 50)
                                   .Select(i => cloudLayouter.PutNextRectangle(
                                               new Size(randomizer.Next(50, 100), randomizer.Next(50, 100))))
                                   .Append(new Rectangle(imageCenter.X + 45, imageCenter.Y + 90, 86, 54).AsResult());

            var rectangles = TestsHelper.SelectValues(rectangleResults).ToArray();

            var intersectingRectangles = TestsHelper.GetAnyPairOfIntersectingRectangles(rectangles);

            if (intersectingRectangles.HasValue)
            {
                wrongVisualizationCloud = new WrongVisualizationCloud(TestsHelper.BackgroundColor,
                                                                      TestsHelper.TagStyleByTagType,
                                                                      intersectingRectangles.Value, rectangles);
            }

            Assert.Fail("Should fail to test logging functionality.");
        }
Пример #15
0
        public void CreateImage(IEnumerable <string> args)
        {
            var settings      = GetSettings(args);
            var reader        = new FileTextReader();
            var words         = reader.ReadWords(settings.InputFilePath);
            var filter        = new Filter();
            var filteredWords = filter.FilterWords(words);
            IEnumerable <string> newFilteredWords = null;

            if (filteredWords.IsSuccess)
            {
                newFilteredWords = filteredWords.Value;
            }
            var converter       = new WordToSizeConverter();
            var wordsSizes      = converter.ConvertToSizes(newFilteredWords);
            var visualisator    = new Visualisator();
            var color           = settings.WordsColor;
            var font            = settings.WordsFont;
            var layouter        = new CircularCloudLayouter();
            var wordsRectangles = wordsSizes.Select(s => new Tuple <string, Rectangle>(s.Item1, layouter.PutNextRectangle(s.Item2)));
            var currentBitmap   = visualisator.Visualize(wordsRectangles, settings.ImageSize, color, font);
            var saver           = new Saver();

            saver.SaveImage(currentBitmap, settings.OutputFilePath);
        }
Пример #16
0
 public void SetUp()
 {
     rectangles = new List <Rectangle>();
     cloud      = new CircularCloudLayouter {
         Center = center
     };
 }
Пример #17
0
        public void PutNextRectangle_Throws_WhenNegativeSize()
        {
            layouter = new CircularCloudLayouter(new Point(0, 0));
            Action action = () => PutNextRectangle(new Size(-10, 0));

            action.Should().Throw <ArgumentException>();
        }
Пример #18
0
        public void PutNextRectangle_WhenPutEnoughRectangles_RectanglesShouldBeLikeCircle()
        {
            pointGenerator = new SpiralGenerator(new Point(500, 500));
            layouter       = new CircularCloudLayouter(pointGenerator);
            var    random         = new Random(0);
            var    areaRectangles = 0;
            double radius         = 0;

            for (var i = 0; i < 100; i++)
            {
                var size = new Size(random.Next(10, 50), random.Next(10, 50));
                var rect = layouter.PutNextRectangle(size);
                areaRectangles += rect.Height * rect.Width;

                var currentRadius = GetDistance(layouter.Center, rect.GetCenter());
                if (currentRadius > radius)
                {
                    radius = currentRadius;
                }
            }

            var expectedRadius = Math.Sqrt(areaRectangles / Math.PI) * 1.2;

            radius.Should().BeLessThan(expectedRadius);
        }
Пример #19
0
 public void SetUp()
 {
     layout      = new CircularCloudLayouter();
     rectangles  = new List <Rectangle>();
     visualizer  = new CircularCloudVisualizer(new ImageSettings(), rectangles);
     defaultSize = new Size(100, 50);
 }
Пример #20
0
        public void PutNextRectangle_ShouldPutFirstRectangleOnCenter()
        {
            var layouter = new CircularCloudLayouter(config, spiral.Object);
            var rect     = layouter.PutNextRectangle(new Size(10, 10));

            rect.ShouldBeEquivalentTo(new Rectangle(-5, -5, 10, 10));
        }
Пример #21
0
 public void SetUp()
 {
     centerPoint = new Point(50, 50);
     width       = 100;
     height      = 100;
     cloud       = new CircularCloudLayouter(centerPoint, width, height);
 }
Пример #22
0
        public void PutNextRectangle_ShouldCallSpiralOnce()
        {
            var layouter = new CircularCloudLayouter(config, spiral.Object);

            layouter.PutNextRectangle(new Size(10, 10));

            spiral.Verify(s => s.GetNextPoint(), Times.Once);
        }
Пример #23
0
        public static bool IsCircleFormForCloudLayouter(CircularCloudLayouter cloudLayouter)
        {
            throw new NotSupportedException();
            //var averageRadius = cloudLayouter.Rectangles.Select(r => (int)cloudLayouter.LauoutCenter.MaxDistTo(r)).Average();
            //var maxRadius = cloudLayouter.Rectangles.Select(r => (int)cloudLayouter.LauoutCenter.MaxDistTo(r)).Max();

            //return maxRadius <= averageRadius * 2;
        }
Пример #24
0
        public void PutNextRectangle_ReturnsFailedResult_WhenSpiralGeneratorNull()
        {
            var layouter = new CircularCloudLayouter(null);
            var result   = layouter.PutNextRectangle(new Size(2, 2));

            result.IsSuccess.Should().BeFalse();
            result.Error.Should().Contain("Point generator cannot be null");
        }
Пример #25
0
        public void ThrowArgumentException_AfterPuttingRectangle(int width, int height)
        {
            var    spiral   = new Spiral();
            var    tagCloud = new CircularCloudLayouter(spiral);
            Action putting  = () => tagCloud.PutNextRectangle(new Size(width, height));

            putting.Should().Throw <ArgumentException>();
        }
Пример #26
0
        public Point PutNextRectangle_ShouldReturnInCenter_WhenPutOnlyOne(Point center, Size size)
        {
            var layouter = new CircularCloudLayouter(center, new Size(1000, 1000));

            var rectangle = layouter.PutNextRectangle(size);

            return(rectangle.Location);
        }
Пример #27
0
        public IEnumerable <(string, Rectangle)> GetWordsRectangles(IEnumerable <Word> words, Size pictureSize)
        {
            var circularCloudLayouter =
                new CircularCloudLayouter(new Point(pictureSize.Width / 2, pictureSize.Height / 2), pictureSize);

            return(words
                   .Select(w => (w.Value, circularCloudLayouter.PutNextRectangle(w.Size))));
        }
Пример #28
0
 public void Init()
 {
     radius            = double.MinValue;
     rectanglesInCloud = new List <Rectangle>();
     center            = new Point(23, 32);
     spiral            = new Spiral(new SpiralSettings(center));
     layouter          = new CircularCloudLayouter(spiral);
 }
Пример #29
0
 public void SetUp()
 {
     center         = new Point(100, 100);
     layout         = new CircularCloudLayouter(center);
     rectangleSizes = GetRandomSizeSet();
     rectangles     = new List <Rectangle>();
     rectangleCount = 10;
 }
Пример #30
0
        public void SetUp()
        {
            var options = new OptionsStub(500, 500);

            center   = new Point(options.Width / 2, options.Height / 2);
            layouter = new CircularCloudLayouter();
            layouter.SetCenter(new Point(center.X, center.Y));
        }