mirror of
https://github.com/gnxlxnxx/dubins_path
synced 2026-07-27 15:13:02 +02:00
Update tests
This commit is contained in:
+59
-86
@@ -6,78 +6,63 @@ mod tests {
|
|||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_overlapping_circles_rsl() {
|
fn test_overlapping_circles_rsl() {
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(radius, 0.0);
|
||||||
origin: Point::new(radius, 0.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
RouteCSC::rsl(radius, end_point, end_angle).unwrap();
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
RouteCSC::rsl(test_point).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_overlapping_circles_lsr() {
|
fn test_overlapping_circles_lsr() {
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(-radius, 0.0);
|
||||||
origin: Point::new(-radius, 0.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
RouteCSC::lsr(radius, end_point, end_angle).unwrap();
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
RouteCSC::lsr(test_point).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_far_apart_circles_rlr() {
|
fn test_far_apart_circles_rlr() {
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(7.0 * radius, 0.0);
|
||||||
origin: Point::new(4.0, 0.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
RouteCCC::rlr(radius, end_point, end_angle).unwrap();
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
RouteCCC::rlr(test_point).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_far_apart_circles_lrl() {
|
fn test_far_apart_circles_lrl() {
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(-7.0 * radius, 0.0);
|
||||||
origin: Point::new(-4.0, 0.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
RouteCCC::rlr(radius, end_point, end_angle).unwrap();
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
RouteCCC::rlr(test_point).unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_points_rsr() {
|
fn test_points_rsr() {
|
||||||
{
|
{
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(0.0, 10.0);
|
||||||
origin: Point::new(0.0, 10.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
let expected_result_rsr = RouteCSC {
|
let expected_result_rsr = RouteCSC {
|
||||||
start: CircleVector {
|
start: CirclePath {
|
||||||
center: Point::new(0.5, 0.0),
|
center: Point::new(0.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
tangent: Vector {
|
tangent: StraightPath {
|
||||||
origin: Point::new(0.0, 0.0),
|
origin: Point::new(0.0, 0.0),
|
||||||
angle: Angle::frac_pi_2(),
|
vector: Vector::from_angle_and_length(Angle::frac_pi_2(), 10.0),
|
||||||
magnitude: 10.0,
|
|
||||||
},
|
},
|
||||||
end: CircleVector {
|
end: CirclePath {
|
||||||
center: Point::new(0.5, 10.0),
|
center: Point::new(0.5, 10.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let result_rsr = RouteCSC::rsr(test_point).unwrap();
|
let result_rsr = RouteCSC::rsr(radius, end_point, end_angle).unwrap();
|
||||||
|
|
||||||
assert!(result_rsr.start.approx_eq(expected_result_rsr.start));
|
assert!(result_rsr.start.approx_eq(expected_result_rsr.start));
|
||||||
assert!(result_rsr.tangent.approx_eq(expected_result_rsr.tangent));
|
assert!(result_rsr.tangent.approx_eq(expected_result_rsr.tangent));
|
||||||
@@ -89,30 +74,27 @@ mod tests {
|
|||||||
fn test_points_rsl() {
|
fn test_points_rsl() {
|
||||||
{
|
{
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(0.0, 10.0);
|
||||||
origin: Point::new(0.0, 10.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
let expected_result_rsl = RouteCSC {
|
let expected_result_rsl = RouteCSC {
|
||||||
start: CircleVector {
|
start: CirclePath {
|
||||||
center: Point::new(0.5, 0.0),
|
center: Point::new(0.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
tangent: Vector {
|
tangent: StraightPath {
|
||||||
origin: Point::new(0.0, 0.0),
|
origin: Point::new(0.0, 0.0),
|
||||||
angle: Angle::frac_pi_2(),
|
vector: Vector::from_angle_and_length(Angle::frac_pi_2(), 10.0),
|
||||||
magnitude: 10.0,
|
|
||||||
},
|
},
|
||||||
end: CircleVector {
|
end: CirclePath {
|
||||||
center: Point::new(-0.5, 10.0),
|
center: Point::new(-0.5, 10.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let result_rsl = RouteCSC::rsl(test_point).unwrap();
|
let result_rsl = RouteCSC::rsl(radius, end_point, end_angle).unwrap();
|
||||||
|
|
||||||
assert!(result_rsl.start.approx_eq(expected_result_rsl.start));
|
assert!(result_rsl.start.approx_eq(expected_result_rsl.start));
|
||||||
assert!(result_rsl.tangent.approx_eq(expected_result_rsl.tangent));
|
assert!(result_rsl.tangent.approx_eq(expected_result_rsl.tangent));
|
||||||
@@ -124,30 +106,27 @@ mod tests {
|
|||||||
fn test_points_lsl() {
|
fn test_points_lsl() {
|
||||||
{
|
{
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(0.0, 10.0);
|
||||||
origin: Point::new(0.0, 10.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
let expected_result_lsl = RouteCSC {
|
let expected_result_lsl = RouteCSC {
|
||||||
start: CircleVector {
|
start: CirclePath {
|
||||||
center: Point::new(-0.5, 0.0),
|
center: Point::new(-0.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
tangent: Vector {
|
tangent: StraightPath {
|
||||||
origin: Point::new(0.0, 0.0),
|
origin: Point::new(0.0, 0.0),
|
||||||
angle: Angle::frac_pi_2(),
|
vector: Vector::from_angle_and_length(Angle::frac_pi_2(), 10.0),
|
||||||
magnitude: 10.0,
|
|
||||||
},
|
},
|
||||||
end: CircleVector {
|
end: CirclePath {
|
||||||
center: Point::new(-0.5, 10.0),
|
center: Point::new(-0.5, 10.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let result_lsl = RouteCSC::lsl(test_point).unwrap();
|
let result_lsl = RouteCSC::lsl(radius, end_point, end_angle).unwrap();
|
||||||
|
|
||||||
assert!(result_lsl.start.approx_eq(expected_result_lsl.start));
|
assert!(result_lsl.start.approx_eq(expected_result_lsl.start));
|
||||||
assert!(result_lsl.tangent.approx_eq(expected_result_lsl.tangent));
|
assert!(result_lsl.tangent.approx_eq(expected_result_lsl.tangent));
|
||||||
@@ -159,30 +138,27 @@ mod tests {
|
|||||||
fn test_point_lsr() {
|
fn test_point_lsr() {
|
||||||
{
|
{
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(0.0, 10.0);
|
||||||
origin: Point::new(0.0, 10.0),
|
let end_angle = Angle::zero();
|
||||||
angle: Angle::zero(),
|
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
let expected_result_lsr = RouteCSC {
|
let expected_result_lsr = RouteCSC {
|
||||||
start: CircleVector {
|
start: CirclePath {
|
||||||
center: Point::new(-0.5, 0.0),
|
center: Point::new(-0.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
tangent: Vector {
|
tangent: StraightPath {
|
||||||
origin: Point::new(0.0, 0.0),
|
origin: Point::new(0.0, 0.0),
|
||||||
angle: Angle::frac_pi_2(),
|
vector: Vector::from_angle_and_length(Angle::frac_pi_2(), 10.0),
|
||||||
magnitude: 10.0,
|
|
||||||
},
|
},
|
||||||
end: CircleVector {
|
end: CirclePath {
|
||||||
center: Point::new(0.5, 10.0),
|
center: Point::new(0.5, 10.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::zero(),
|
angle: Angle::zero(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let result_lsr = RouteCSC::lsr(test_point).unwrap();
|
let result_lsr = RouteCSC::lsr(radius, end_point, end_angle).unwrap();
|
||||||
|
|
||||||
assert!(result_lsr.start.approx_eq(expected_result_lsr.start));
|
assert!(result_lsr.start.approx_eq(expected_result_lsr.start));
|
||||||
assert!(result_lsr.tangent.approx_eq(expected_result_lsr.tangent));
|
assert!(result_lsr.tangent.approx_eq(expected_result_lsr.tangent));
|
||||||
@@ -194,30 +170,28 @@ mod tests {
|
|||||||
fn test_point_rlr() {
|
fn test_point_rlr() {
|
||||||
{
|
{
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(3.0, 0.0);
|
||||||
origin: Point::new(3.0, 0.0),
|
let end_angle = Angle::pi();
|
||||||
angle: Angle::pi(),
|
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
let expected_result_rlr = RouteCCC {
|
let expected_result_rlr = RouteCCC {
|
||||||
start: CircleVector {
|
start: CirclePath {
|
||||||
center: Point::new(0.5, 0.0),
|
center: Point::new(0.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::pi(),
|
angle: Angle::pi(),
|
||||||
},
|
},
|
||||||
middle: CircleVector {
|
middle: CirclePath {
|
||||||
center: Point::new(1.5, 0.0),
|
center: Point::new(1.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::pi(),
|
angle: Angle::pi(),
|
||||||
},
|
},
|
||||||
end: CircleVector {
|
end: CirclePath {
|
||||||
center: Point::new(2.5, 0.0),
|
center: Point::new(2.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::pi(),
|
angle: Angle::pi(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let result_rlr = RouteCCC::rlr(test_point).unwrap();
|
let result_rlr = RouteCCC::rlr(radius, end_point, end_angle).unwrap();
|
||||||
|
|
||||||
assert!(result_rlr.start.approx_eq(expected_result_rlr.start));
|
assert!(result_rlr.start.approx_eq(expected_result_rlr.start));
|
||||||
assert!(result_rlr.middle.approx_eq(expected_result_rlr.middle));
|
assert!(result_rlr.middle.approx_eq(expected_result_rlr.middle));
|
||||||
@@ -229,33 +203,32 @@ mod tests {
|
|||||||
fn test_point_lrl() {
|
fn test_point_lrl() {
|
||||||
{
|
{
|
||||||
let radius = 0.5;
|
let radius = 0.5;
|
||||||
let test_point = Vector {
|
let end_point = Point::new(-3.0, 0.0);
|
||||||
origin: Point::new(-3.0, 0.0),
|
let end_angle = Angle::pi();
|
||||||
angle: Angle::pi(),
|
|
||||||
magnitude: radius,
|
|
||||||
};
|
|
||||||
let expected_result_lrl = RouteCCC {
|
let expected_result_lrl = RouteCCC {
|
||||||
start: CircleVector {
|
start: CirclePath {
|
||||||
center: Point::new(-0.5, 0.0),
|
center: Point::new(-0.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::pi(),
|
angle: Angle::pi(),
|
||||||
},
|
},
|
||||||
middle: CircleVector {
|
middle: CirclePath {
|
||||||
center: Point::new(-1.5, 0.0),
|
center: Point::new(-1.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::pi(),
|
angle: Angle::pi(),
|
||||||
},
|
},
|
||||||
end: CircleVector {
|
end: CirclePath {
|
||||||
center: Point::new(-2.5, 0.0),
|
center: Point::new(-2.5, 0.0),
|
||||||
radius: radius,
|
radius: radius,
|
||||||
angle: Angle::pi(),
|
angle: Angle::pi(),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let result_lrl = RouteCCC::lrl(test_point).unwrap();
|
let result_lrl = RouteCCC::lrl(radius, end_point, end_angle).unwrap();
|
||||||
|
|
||||||
assert!(result_lrl.start.approx_eq(expected_result_lrl.start));
|
assert!(result_lrl.start.approx_eq(expected_result_lrl.start));
|
||||||
assert!(result_lrl.middle.approx_eq(expected_result_lrl.middle));
|
assert!(result_lrl.middle.approx_eq(expected_result_lrl.middle));
|
||||||
|
println!("{:?}", result_lrl.end);
|
||||||
assert!(result_lrl.end.approx_eq(expected_result_lrl.end));
|
assert!(result_lrl.end.approx_eq(expected_result_lrl.end));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user