Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

C# Unit Testing in C# Writing Unit Tests First Test

Simmigon Flagg
PLUS
Simmigon Flagg
Courses Plus Student 559 Points

I called the OnMap method but it's giving me the error message that I did not use it.

I'm stuck

Map.cs
namespace TreehouseDefense
{
    public class Map
    {
        public readonly int Width;
        public readonly int Height;

        public Map(int width, int height)
        {
            if(width < 1 || height < 1)
            {
                throw new System.ArgumentOutOfRangeException(
                    "Map must be at least 1x1");
            }

            Width = width;
            Height = height;
        }

        public bool OnMap(Point point)
        {
            return point.X >= 0 && point.X < Width && 
                   point.Y >= 0 && point.Y < Height;
        }
    }
}
MapTests.cs
using Xunit;

namespace TreehouseDefense.Tests
{
    public class MapTests
    {
        [Fact]
        public void OnMapTest()
        {

            int x = 2;
            int y = 4;
            int Width =x;
            int Length = y;

            var point = new Point (x, y);
            var OnMap = new OnMap(Width, Length);

            Assert.Equals(Width, OnMap.Width);
            Assert.Equals(Length, OnMap.Length);
        }
    }
}
Point.cs
using System;

namespace TreehouseDefense
{
    public class Point
    {
        public readonly int X;
        public readonly int Y;

        public Point(int x, int y)
        {
            X = x;
            Y = y;
        }

        public double DistanceTo(Point point)
        {
            return Math.Sqrt(Math.Pow(X - point.X, 2.0) + Math.Pow(Y - point.Y, 2.0));
        }
    }
}

1 Answer

Steven Parker
Steven Parker
229,921 Points

You called "OnMap" with a "new", as you might to create a new object. But "OnMap" is a method of a "Map" object, it's not an object itself.

So you'll want to create a Map object, and then call the .OnMap() method on it using your test point . And instead of testing equality, your assert should likely just see if the result is "True".