You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

148 lines
5.5 KiB

using AOC2021.Test;
using AOC2021.Tests.Models;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using AOC2021.Models;
using AOC2021.Test.Models;
using System.Diagnostics;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AOC2021.Tests
{
[TestClass]
public class DayTest
{
private AOCTester _tester;
public DayTest()
{
_tester = new AOCTester();
}
[TestMethod]
public void Day1()
{
var request = new TestRequest() { Day = "day1", Answer = new Answer() { Day_A_Test = "7", Day_A_Input = "1759", Day_B_Test = "5", Day_B_Input = "1805" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day2()
{
var request = new TestRequest() { Day = "day2", Answer = new Answer() { Day_A_Test = "150", Day_A_Input = "1762050", Day_B_Test = "900", Day_B_Input = "1855892637" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day3()
{
var request = new TestRequest() { Day = "day3", Answer = new Answer() { Day_A_Test = "198", Day_A_Input = "3148794", Day_B_Test = "230", Day_B_Input = "2795310" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day4()
{
var request = new TestRequest() { Day = "day4", Answer = new Answer() { Day_A_Test = "4512", Day_A_Input = "63424", Day_B_Test = "1924", Day_B_Input = "23541" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day5()
{
var request = new TestRequest() { Day = "day5", Answer = new Answer() { Day_A_Test = "5", Day_A_Input = "7644", Day_B_Test = "12", Day_B_Input = "18627" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day6()
{
var request = new TestRequest() { Day = "day6", Answer = new Answer() { Day_A_Test = "5934", Day_A_Input = "390011", Day_B_Test = "26984457539", Day_B_Input = "1746710169834" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day7()
{
var request = new TestRequest() { Day = "day7", Answer = new Answer() { Day_A_Test = "37", Day_A_Input = "345035", Day_B_Test = "168", Day_B_Input = "97038163" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
[TestMethod]
public void Day8()
{
var request = new TestRequest() { Day = "day8", Answer = new Answer() { Day_A_Test = "26", Day_A_Input = "543", Day_B_Test = "", Day_B_Input = "" } };
var result = _tester.Test(request);
Assert.IsTrue(request.Answer.Equals(result.Answer));
}
//[TestMethod]
public void MapVsEnumberable()
{
var addSw = new Stopwatch();
addSw.Start();
var eList = new System.Collections.Generic.List<DataPoint>();
for (int x = 0; x < 1000; x++)
for (int y = 0; y < 1000; y++)
{
eList.Add(new DataPoint() { x = x, y = y, name = $"{x} - {y}" });
}
addSw.Stop();
Console.WriteLine($"Took {addSw.ElapsedMilliseconds}ms to create list");
addSw.Restart();
var dList = new Dictionary<string, DataPoint>();
for (int x = 0; x < 1000; x++)
for (int y = 0; y < 1000; y++)
{
dList.Add($"{x},{y}", new DataPoint() { x = x, y = y, name = $"{x} - {y}" });
}
addSw.Stop();
Console.WriteLine($"Took {addSw.ElapsedMilliseconds}ms to create dictionary");
var random = new Random();
var getSW = new Stopwatch();
getSW.Start();
for (int i = 0; i < 1000; i++)
{
var pointX = random.Next(0, 1000);
var pointY = random.Next(0, 1000);
var point = GetDP(eList, pointX, pointY);
Assert.AreEqual(pointY, point.y);
}
getSW.Stop();
Console.WriteLine($"Took {getSW.ElapsedTicks}ticks to get list ");
getSW.Reset();
getSW.Start();
for (int i = 0; i < 1000; i++)
{
var pointX = random.Next(0, 1000);
var pointY = random.Next(0, 1000);
var point = dList[$"{pointX},{pointY}"];
Assert.AreEqual(pointY, point.y);
}
getSW.Stop();
Console.WriteLine($"Took {getSW.ElapsedTicks}ticks to get dictionary ");
}
private DataPoint GetDP(List<DataPoint> eList, int pointX, int pointY)
{
foreach (var bs in eList)
if (bs.x == pointX && bs.y == pointY)
return bs;
return null;
}
}
class DataPoint
{
public int x { get; set; }
public int y { get; set; }
public string name { get; set; }
}
}