-
Notifications
You must be signed in to change notification settings - Fork 307
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Смышляев Дмитрий #253
base: master
Are you sure you want to change the base?
Смышляев Дмитрий #253
Conversation
- Добавил дискретную спираль - Написал тесты на отрицательный шаг - Написал тесты на штатную инициализацию - Реализовал функционал тестов
- Написал тесты для обхода по спирали - Реализовал функционал обхода по спирали согласно тестам
- Отрефакторил код - Добавил тест на добавление прямоугольника - Реализовал логику согласно тесту
- Не бейте
- Это был Архимед
- И новая директория под ниъ
- Ввел спираль в полярных координатах - Отрефакторил код
- Написал тест на обработку негативных значений - Добавил обработку негативных значений
- Добавил тест на генерацию точек - Реализовал генерацию
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Подумай над требованиям по форме облака, как их можно отобразить в тестах
Если получится, можно отразить требование на плотность замощения прямоугольниками
var rectangleUpperLeft = rectangleCenter - rectangleSize / 2; | ||
var rect = new Rectangle(rectangleUpperLeft, rectangleSize); | ||
|
||
if (!placedRectangles.Any(r => r.IntersectsWith(rect))) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Скорее .All(!Intersects)
private List<Rectangle> placedRectangles; | ||
private IPointGenerator<Point> pointGenerator; | ||
|
||
public Point Center { get; private set; } |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Зачем нужен setter?
return true; | ||
} | ||
|
||
public void Reset() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Смущает, что у тебя спираль на самом деле не просто спираль. Она ещё знает что-то про размещения.
Думаю, что это не так плохо, если ты честно будешь позиционировать этот класс как спираль и что-то для передвижения . И этот метод, тогда, должен делать смещение (а не Reset).
} | ||
} | ||
|
||
[TestCaseSource(nameof(ThrowErrorOnNotPositiveNumberTestCases))] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Тут такое ощущение, что проще будет использовать TestCase
обычный) Точка у тебя всегда (0, 0), а остальные параметры вполне себе можно положить в атрибут :)
var random = new Random(); | ||
var layouter = new SpiralCloudLayouter(new Point(0, 0)); | ||
var rectangleSizes = new Size[100]; | ||
for (var i = 0; i < rectangleSizes.Length; i++) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Проверки на пересечение ну очень сложная) Давай проще
namespace TagsCloudVisualizationTests.SpiralLayouter.PointGenerator; | ||
|
||
[TestFixture] | ||
public class PolarArchimedesSpiralTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Кажется, у тебя есть тест на какой-то один случай, когда спираль круглая/квадратная.
Я думаю, что благодаря такому разделению ты можешь относительно просто проверить в этих тестах, что точки, которые генерирует спираль стремятся к окружности/квадрату.
- BitmapGenerator теперь центрирует прямоугольники самостоятельно - В пару к генератору появился BitmapSaver, который сохраняет и возвращает путь
@w1jtoo
Что на данный момент есть