Мой код не проходит тест, я не знаю, что делатьC#

Место общения программистов C#
Ответить
Anonymous
 Мой код не проходит тест, я не знаю, что делать

Сообщение Anonymous »

Когда я тестирую код, он возвращает ошибку:
По крайней мере один из тестов не пройден!
Имя теста: GetJointPositions_Test(1.5707963267948966d,0,0,0,330.0f)
Сообщение :
конец ладониY
Ожидалось: 330.0d +/- 1.0000000000000001E-05d
Но было: 210.0d
Отклонение: 120.0d
Пытался изменить тест, но тогда эта практика не засчитывается на сайте, где я выполняю задание
using System;
using Avalonia;
using NUnit.Framework;
using static Manipulation.Manipulator;

namespace Manipulation
{
public static class AnglesToCoordinatesTask
{
///
/// По значению углов суставов возвращает массив координат суставов
/// в порядке new []{elbow, wrist, palmEnd}
///
public static Point[] GetJointPositions(double shoulder, double elbow, double wrist)
{
var elbowX = UpperArm * Math.Cos(shoulder);
var elbowY = UpperArm * Math.Sin(shoulder);
var elbowPos = new Point(elbowX, elbowY);

var wristAng = shoulder + elbow;
var wristX = elbowX + Forearm * Math.Cos(wristAng);
var wristY = elbowY + Forearm * Math.Sin(wristAng);
var wristPos = new Point(wristX, wristY);

var palmEndAng = wristAng + wrist;
var palmEndX = wristX + Palm * Math.Cos(palmEndAng);
var palmEndY = wristY + Palm * (-Math.Sin(palmEndAng));
var palmEndPos = new Point(palmEndX, palmEndY);

return new[]
{
elbowPos,
wristPos,
palmEndPos
};
}
}

[TestFixture]
public class AnglesToCoordinatesTask_Tests
{
[TestCase(0, 0, 0, UpperArm + Forearm + Palm, 0)]
[TestCase(Math.PI / 2, 0, 0, 0, UpperArm + Forearm + Palm)]
[TestCase(Math.PI, 0, 0, -UpperArm - Forearm - Palm, 0)]
[TestCase(0, Math.PI / 2, 0, UpperArm, UpperArm + Forearm)]
[TestCase(Math.PI / 2, Math.PI / 2, Math.PI / 2, -Forearm, UpperArm - Palm)]
[TestCase(0, Math.PI / 2, 0, UpperArm, UpperArm + Forearm)]
[TestCase(0, Math.PI / 2, 0, UpperArm, UpperArm + Forearm)]
public void GetJointPositions_Test(
double shoulder, double elbow, double wrist,
double palmEndX, double palmEndY)
{
var joints = AnglesToCoordinatesTask.GetJointPositions(shoulder, elbow, wrist);
Assert.That(joints[2].X, Is.EqualTo(palmEndX).Within(1e-5), "palm endX");
Assert.That(joints[2].Y, Is.EqualTo(palmEndY).Within(1e-5), "palm endY");

Assert.That(dis(new Point(0, 0), joints[0]), Is.EqualTo(UpperArm).Within(1e-5), "dis shoulder to elbow");
Assert.That(dis(joints[0], joints[1]), Is.EqualTo(Forearm).Within(1e-5), "dis elbow to wrist");
Assert.That(dis(joints[1], joints[2]), Is.EqualTo(Palm).Within(1e-5), "dis wrist to palm end");
}

private double dis(Point a, Point b)
{
return Math.Sqrt(Math.Pow(a.X - b.X, 2) + Math.Pow(a.Y - b.Y, 2));
}
}
}


Подробнее здесь: https://stackoverflow.com/questions/784 ... what-to-do
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»