From 06660a2fa1a4b2d4677a78eed49fc92b67b9367e Mon Sep 17 00:00:00 2001 From: zwarenelle Date: Sun, 9 Jun 2024 19:37:52 +0200 Subject: [PATCH] add test to mapper --- src/Client/Mapper/Map.cs | 17 +++++++++++++ src/Client/RobotController/Measurement.cs | 2 -- .../CoveragePathPlanner.cs | 14 ----------- .../net8.0/CoveragePathPlanner.deps.json | 23 ++++++++++++++++++ .../bin/Debug/net8.0/CoveragePathPlanner.dll | Bin 0 -> 7680 bytes .../bin/Debug/net8.0/CoveragePathPlanner.pdb | Bin 0 -> 13208 bytes 6 files changed, 40 insertions(+), 16 deletions(-) create mode 100644 src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.deps.json create mode 100644 src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.dll create mode 100644 src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.pdb diff --git a/src/Client/Mapper/Map.cs b/src/Client/Mapper/Map.cs index 42ee3b4..43d68f9 100644 --- a/src/Client/Mapper/Map.cs +++ b/src/Client/Mapper/Map.cs @@ -1,4 +1,5 @@ using RobotController; +using System.Drawing; namespace Mapper { @@ -10,6 +11,22 @@ namespace Mapper { this.bottomLeft = bottomLeft; this.bottomRight = bottomRight; + Console.Write(testPathPlanner); } + + public List testPathPlanner() + { + CoveragePathPlanner planner = new CoveragePathPlanner(500, 500); + + List obstacles = new List + { + new Obstacle { X = 100, Y = 100, Width = 50, Height = 50 }, + new Obstacle { X = 200, Y = 200, Width = 100, Height = 100 }, + new Obstacle { X = 300, Y = 300, Width = 150, Height = 150 } + }; + + return planner.PlanPath(obstacles); } + + } } diff --git a/src/Client/RobotController/Measurement.cs b/src/Client/RobotController/Measurement.cs index 193eb57..5a01056 100644 --- a/src/Client/RobotController/Measurement.cs +++ b/src/Client/RobotController/Measurement.cs @@ -1,5 +1,3 @@ -namespace RobotController -{ using System; using System.Collections.Generic; using System.Linq; diff --git a/src/CoveragePathPlanner/CoveragePathPlanner.cs b/src/CoveragePathPlanner/CoveragePathPlanner.cs index 4cb4ef6..dbeff63 100644 --- a/src/CoveragePathPlanner/CoveragePathPlanner.cs +++ b/src/CoveragePathPlanner/CoveragePathPlanner.cs @@ -115,20 +115,6 @@ public class CoveragePathPlanner return Math.Abs(cell.X - (_width - 1)) + Math.Abs(cell.Y - (_height - 1)); } - public List test() - { - CoveragePathPlanner planner = new CoveragePathPlanner(500, 500); - - List obstacles = new List - { - new Obstacle { X = 100, Y = 100, Width = 50, Height = 50 }, - new Obstacle { X = 200, Y = 200, Width = 100, Height = 100 }, - new Obstacle { X = 300, Y = 300, Width = 150, Height = 150 } - }; - - return planner.PlanPath(obstacles); - - } } public class Obstacle diff --git a/src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.deps.json b/src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.deps.json new file mode 100644 index 0000000..d41e7f7 --- /dev/null +++ b/src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.deps.json @@ -0,0 +1,23 @@ +{ + "runtimeTarget": { + "name": ".NETCoreApp,Version=v8.0", + "signature": "" + }, + "compilationOptions": {}, + "targets": { + ".NETCoreApp,Version=v8.0": { + "CoveragePathPlanner/1.0.0": { + "runtime": { + "CoveragePathPlanner.dll": {} + } + } + } + }, + "libraries": { + "CoveragePathPlanner/1.0.0": { + "type": "project", + "serviceable": false, + "sha512": "" + } + } +} \ No newline at end of file diff --git a/src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.dll b/src/CoveragePathPlanner/bin/Debug/net8.0/CoveragePathPlanner.dll new file mode 100644 index 0000000000000000000000000000000000000000..a487bf22ea6707a7b838a2569492ae5d5d1ee7aa GIT binary patch literal 7680 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 AlmGw# literal 0 HcmV?d00001