214 похожих чатов

Доброго! Маслёнок на связи. У меня такая ситуация с NUnit: ручками

дебаггер с брейкпоинтами выдает корректные значения, а при автоматической проверке в корне неправильные. Практически все тесты заваливаются. В аналогичном проекте такая проблема не появляется. В чём может заключаться причина такого поведения?
Первый скрин дебага ручками, второй без брейкпоинтов соответственно.

14 ответов

24 просмотра
Alex
судя по значению у тебя флоат-ебанина

Но там ведь везде использовался double? Просто вообще не могу сообразить, почему ручное прохождение на что-то влияет.

Что значит «в аналогичном проекте не проявляется»? У тебя вообще все тесты херню выдают?

Head Gear Sidoryuk
Что значит «в аналогичном проекте не проявляется»?...

Нет, только там, где числа получены через рандом. Другие тесты с заранее введёнными значениями работают нормально (где-то штук 20).

Head Gear Sidoryuk
Кинь код с рандомом. Код самописный или копипаста ...

Сам код тестов был задан сразу ulearn и шёл вместе с проектом. [TestCase(2, 2)] [TestCase(3, 3)] [TestCase(4, 4)] [TestCase(5, 5)] [TestCase(10, 10)] [TestCase(3, 5)] [Repeat(500)] public void SolveRandomMatrix(int rows, int columns) { var randomMatrix = CreateRandomMatrix(rows, columns); var randomFreeMembers = GetRandomFreeMembers(randomMatrix); var actualSolution = solver.Solve(randomMatrix, randomFreeMembers); // как раз тут уже идет моя реализация solve AssertIsSolution(actualSolution, randomMatrix, randomFreeMembers, 1e-3); } private double[][] CreateRandomMatrix(int rows, int columns, int valuesRange = 1000) { return Enumerable.Range(0, rows).Select(r => CreateRandomRow(columns, valuesRange)).ToArray(); } private double[] GetRandomFreeMembers(double[][] matrix) { const int max = 100; var xs = Enumerable.Range(0, matrix[0].Length).Select(c => random.Next(-max, max)); var freeMembers = matrix.Select(row => row.Zip(xs, (f, s) => f * s).Sum()).ToArray(); return freeMembers; } private static void AssertIsSolution(double[] actual, double[][] matrix, double[] freeMembers, double accuracy) { for (var i = 0; i < matrix.GetLength(0); i++) { var line = matrix[i]; var result = line.Select((element, j) => element * actual[j]).Sum(); Assert.AreEqual(freeMembers[i], result, accuracy, GetAssertionMessage(matrix, freeMembers, actual, i+1)); } } private static string GetAssertionMessage( double[][] sourceMatrix, double[] freeMembers, double[] actualSolution, int equationIndex) { var builder = new StringBuilder("The solution is incorrect!" + Environment.NewLine + Environment.NewLine); builder.Append("Initial matrix:" + Environment.NewLine + sourceMatrix.FormatMatrix() + Environment.NewLine); builder.Append("Free members: [" + string.Join(", ", freeMembers) + "]" + Environment.NewLine); builder.Append("Your solution: [" + string.Join(", ", actualSolution) + "]" + Environment.NewLine); builder.Append($"Equation #{equationIndex} is not satisfied"); return builder.ToString(); }

Head Gear Sidoryuk
Делай через pastebin. С телефона читать очень плох...

https://pastebin.com/iHwj7368 Ладно, проще весь код тестов скинуть, чем обрезать. Нужный тест — SolveRandomMatrix.

Head Gear Sidoryuk
И это, код solve то тоже скинь.

https://pastebin.com/PQtXvjkA Он ещё немножко не рефакторился от слова вообще, посему может быть слегка больно.

Ну может тип инт диапозон от -32768 до 32768 и тип переполнение. Юзай двойное слово.

Давай, интересно что получилось

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта