Beispiel #1
0
        public void RobotGroupEquality()
        {
            var lhs = new RobotGroup();
            var rhs = new RobotGroup();

            lhs.Equals(rhs).Should().BeTrue();
        }
Beispiel #2
0
        public void AllowRobotGroupToString(string expected, string userAgent, params string[] allowPaths)
        {
            var group = new RobotGroup
            {
                UserAgent = userAgent,
                Allow     = allowPaths
            };

            group.ToString().Should().Be(expected);
        }
        public void ReturnUserAgent_AndAllow_WhenAny_WihoutDisallow_WhenNone(string userAgent, string allow)
        {
            var group = new RobotGroup(userAgent, new[] { allow }, new string[0]);

            string output = group.ToString();

            string[] parts = output.Split(Environment.NewLine);
            Assert.AreEqual($"User-agent: {group.UserAgent}", parts[0]);
            Assert.AreEqual($"Allow: {allow}", parts[1]);
            Assert.AreEqual(2, parts.Length);
        }
        public void ReturnOnlyUserAgent(string userAgent)
        {
            var group = new RobotGroup(userAgent);

            string output = group.ToString();

            var parts = output.Split(Environment.NewLine);

            Assert.AreEqual($"User-agent: {group.UserAgent}", parts[0]);
            Assert.AreEqual(1, parts.Length);
        }
        public void ReturnUserAgent_AndAllow_WhenAny_AndDisallow_WhenAny(string userAgent, string allow, string disallow)
        {
            var group = new RobotGroup(userAgent, new[] { allow }, new[] { disallow });

            string output = group.ToString();

            var parts = output.Split(Environment.NewLine);

            Assert.AreEqual($"User-agent: {group.UserAgent}", parts[0]);
            Assert.AreEqual($"Allow: {allow}", parts[1]);
            Assert.AreEqual($"Disallow: {disallow}", parts[2]);
        }
        public async Task ReturnEachGroupOnOneLine()
        {
            var robotGroup      = new RobotGroup("TestAgent");
            var otherRobotGroup = new RobotGroup("AnotherTestAgent");

            this.robotGroups.Add(robotGroup);
            this.robotGroups.Add(otherRobotGroup);

            string output = await this.writer.WriteAsync();

            string[] parts = output.Split(Environment.NewLine);
            Assert.AreEqual(5, parts.Length);
            Assert.AreEqual(robotGroup.ToString(), parts[1]);
            Assert.AreEqual(otherRobotGroup.ToString(), parts[3]);
        }
Beispiel #7
0
        public void RobotGroupEqualityDisallows(string userAgent, string lhsPaths, string rhsPaths, bool expected)
        {
            var lhs = new RobotGroup()
            {
                UserAgent = userAgent,
                Disallow  = lhsPaths.Split(";")
            };
            var rhs = new RobotGroup()
            {
                UserAgent = userAgent,
                Disallow  = rhsPaths.Split(";")
            };

            lhs.Equals(rhs).Should().Be(expected);
        }
Beispiel #8
0
    /// <summary>
    /// For when we're fetching the details from the database
    /// </summary>
    /// <param name="ipAddress"></param>
    /// <param name="authValue"></param>
    public Robot(string ipAddress, AuthenticationHeaderValue authValue)
    {
        this.ipAddress = ipAddress;
        this.authValue = authValue;

        Registers = new List <Register>(new Register[200]);
        s         = new Status();
        FireAlarm = new FireAlarms();
        Group     = new RobotGroup();
        schedule  = new Scheduler();

        Missions   = new List <Mission>(new Mission[80]);
        currentJob = new Job();

        for (int i = 0; i < 80; i++)
        {
            Missions[i] = new Mission();
        }

        isLive = true;
        deadRobotAlarmNotTriggered = true;
    }
Beispiel #9
0
        /// <summary>
        /// Initializes the robot fleet, Fleet Manager excluded
        /// </summary>
        /// /// <param name="sizeOfFleet">Number of robots in the fleet</param>
        public Fleet(int sizeOfFleet)
        {
            robots = new Robot[sizeOfFleet];
            // robotMapping = new int[2] { 4, 2 };
            httpResponseTasks = new Task <HttpResponseMessage> [sizeOfFleet];

            // Instantiates the group array
            groups = new short[8] {
                0, (short)sizeOfFleet, 0, 0, 0, 0, 0, 0
            };

            // Initialize the robot group
            group = new RobotGroup[8];
            for (int i = 0; i < 8; i++)
            {
                group[i] = new RobotGroup();
            }

            available = new ChargingGroup(2, "FullCharge", "/v2.0.0/charging_groups/2");
            busy      = new ChargingGroup(3, "EmptyCharge", "/v2.0.0/charging_groups/3");

            instantiateRobots(sizeOfFleet);
        }
Beispiel #10
0
        /// <summary>
        /// Generates all the farm stuff
        /// </summary>
        private void GenerateFarm()
        {
            backgroundName = "Farm";

            _workspace = new Workspace(X_MIN, X_MAX, Y_MIN, Y_MAX) { Obstacles = GenerateBaseFarmObstacles() };
            _workspace.GenerateEvenGraph((UInt16)(X_RANGE + 1), (UInt16)(Y_RANGE + 1));

            List<Node> groundPatrolPath = new List<Node>() {
                _workspace.GetNode(new HomeworkTwo.Point(18, 10)),
                _workspace.GetNode(new HomeworkTwo.Point(18, 35)),
                _workspace.GetNode(new HomeworkTwo.Point(28, 35)),
                _workspace.GetNode(new HomeworkTwo.Point(28, 2)),
                _workspace.GetNode(new HomeworkTwo.Point(28, 35)),
                _workspace.GetNode(new HomeworkTwo.Point(18, 35))};

            // Create our robot group with our agents
            _robotGroup = new RobotGroup(
                GeneratePursuers(new HomeworkTwo.Point(25, 38), _workspace, _workspace, groundPatrolPath),
                GenerateTargets(new HomeworkTwo.Point(30, 39), _workspace, _workspace),
                TIME_STEP_LENGTH,
                TIME_HORIZON,
                VISIBLITY_CRITERIA);
        }
Beispiel #11
0
        /// <summary>
        /// Generates all the city stuff
        /// </summary>
        private void GenerateCity()
        {
            backgroundName = "City";
            Obstacles obstacles = new Obstacles();

            // Create obstacles
            for (double i = 3.5; i <= 38; i = i + 5.5)
                for (double j = 25.5; j <= 38; j = j + 5.5)
                    obstacles.Add(new RectangleObstacle(new HomeworkTwo.Point(j,i), 4, 4));

            for (double i = 25.5; i <= 38; i = i + 5.5)
                for (double j = 3.5; j <= 22; j = j + 5.5)
                    obstacles.Add(new RectangleObstacle(new HomeworkTwo.Point(j,i), 4, 4));

            // Set up workspace and generate nodes
            _workspace = new Workspace(X_MIN, X_MAX, Y_MIN, Y_MAX) { Obstacles = obstacles };
            _workspace.GenerateEvenGraph((UInt16)(X_RANGE + 1), (UInt16)(Y_RANGE + 1));

            Workspace airWorkspace = new Workspace(X_MIN, X_MAX, Y_MIN, Y_MAX) { };
            airWorkspace.GenerateEvenGraph((UInt16)(X_RANGE + 1), (UInt16)(Y_RANGE + 1));

            List<Node> groundPatrolPath = new List<Node>() {
                airWorkspace.GetNode(new HomeworkTwo.Point(1, 20)),
                airWorkspace.GetNode(new HomeworkTwo.Point(20, 20)),
                airWorkspace.GetNode(new HomeworkTwo.Point(20, 1)),
                airWorkspace.GetNode(new HomeworkTwo.Point(1, 1))};

            List<Node> airPatrolPath = new List<Node>() {
                airWorkspace.GetNode(new HomeworkTwo.Point(1, 39)),
                airWorkspace.GetNode(new HomeworkTwo.Point(39, 39)),
                airWorkspace.GetNode(new HomeworkTwo.Point(39, 1)),
                airWorkspace.GetNode(new HomeworkTwo.Point(1, 1))};

            // Create our agents
            List<RobotBase> pursuerRobots = new List<RobotBase>() {
                new GroundPursuer(GroundPursuerPatrol.TheInstance,
                    new HomeworkTwo.Point(1,1), // location
                    RADIUS, // radius
                    new Vector2D(), // intial velocity
                    MAX_SPEED * .8f, // max speed
                    new Vector2D(), // intial heading
                    MASS, // mass
                    new Vector2D(), // scale
                    TURN_RATE, // turn rate
                    MAX_FORCE, // max force
                    groundPatrolPath, // patrol path
                    _workspace, // traversability map
                    _workspace), // visibility map

                new AerialPursuer(AerialPursuerPatrol.TheInstance,
                    new HomeworkTwo.Point(1,15), // location
                    RADIUS, // radius
                    new Vector2D(), // intial velocity
                    MAX_SPEED, // max speed
                    new Vector2D(), // intial heading
                    MASS, // mass
                    new Vector2D(), // scale
                    TURN_RATE, // turn rate
                    MAX_FORCE, // max force
                    airPatrolPath, // patrol path
                    airWorkspace, // traversability map
                    airWorkspace) }; // visibility map

            List<Target> targetRobots = new List<Target>() { new Target(TargetPatrol.TheInstance,
                new HomeworkTwo.Point(30,39), // location
                RADIUS, // radius
                new Vector2D(), // intial velocity
                MAX_SPEED, // max speed
                new Vector2D(), // intial heading
                MASS, // mass
                new Vector2D(), // scale
                TURN_RATE, // turn rate
                MAX_FORCE, // max force
                new List<Node>(), // patrol path
                _workspace, // traversability map
                _workspace)}; // visibility map

            // Create our robot group with our agents
            _robotGroup = new RobotGroup(pursuerRobots, targetRobots, TIME_STEP_LENGTH, TIME_HORIZON, VISIBLITY_CRITERIA);
        }