using Core.Parsers.EventOccurrence; using NUnit.Framework; namespace Tests.Parsers.EventOccurrence; [TestFixture] public class LocationPatternMatcher_Tests { [Test] public void Match_ExactMatch_ReturnsLocation() { // Arrange var patterns = new List { "Room A", "Room B", "Hall C" }; // Act var result = LocationPatternMatcher.Match("Room A", patterns); // Assert Assert.That(result, Is.EqualTo("Room A")); } [Test] public void Match_ExactMatch_CaseInsensitive_ReturnsLocation() { // Arrange var patterns = new List { "Room A" }; // Act var result = LocationPatternMatcher.Match("room a", patterns); // Assert Assert.That(result, Is.EqualTo("room a")); } [Test] public void Match_WildcardPattern_Matches_ReturnsLocation() { // Arrange var patterns = new List { "Room *", "Hall *" }; // Act var result = LocationPatternMatcher.Match("Room 101", patterns); // Assert Assert.That(result, Is.EqualTo("Room 101")); } [Test] public void Match_WildcardPattern_MultipleMatches_ReturnsFirstMatch() { // Arrange var patterns = new List { "Room *", "Exhibit Hall *" }; // Act var result = LocationPatternMatcher.Match("Room 202", patterns); // Assert Assert.That(result, Is.EqualTo("Room 202")); } [Test] public void Match_WildcardPattern_ExhibitHall_Matches() { // Arrange var patterns = new List { "Exhibit Hall *" }; // Act var result = LocationPatternMatcher.Match("Exhibit Hall C", patterns); // Assert Assert.That(result, Is.EqualTo("Exhibit Hall C")); } [Test] public void Match_WildcardPattern_MtgRoom_Matches() { // Arrange var patterns = new List { "Mtg. Room *" }; // Act var result = LocationPatternMatcher.Match("Mtg. Room 14", patterns); // Assert Assert.That(result, Is.EqualTo("Mtg. Room 14")); } [Test] public void Match_NoMatch_ReturnsEmpty() { // Arrange var patterns = new List { "Room *", "Hall *" }; // Act var result = LocationPatternMatcher.Match("Unknown Location", patterns); // Assert Assert.That(result, Is.Empty); } [Test] public void Match_EmptyLocation_ReturnsEmpty() { // Arrange var patterns = new List { "Room *" }; // Act var result = LocationPatternMatcher.Match("", patterns); // Assert Assert.That(result, Is.Empty); } [Test] public void Match_WhitespaceLocation_ReturnsEmpty() { // Arrange var patterns = new List { "Room *" }; // Act var result = LocationPatternMatcher.Match(" ", patterns); // Assert Assert.That(result, Is.Empty); } [Test] public void Match_EmptyPatterns_ReturnsEmpty() { // Arrange var patterns = new List(); // Act var result = LocationPatternMatcher.Match("Room A", patterns); // Assert Assert.That(result, Is.Empty); } [Test] public void Match_PatternWithSpecialCharacters_EscapesCorrectly() { // Arrange var patterns = new List { "Room (A)" }; // Act var result = LocationPatternMatcher.Match("Room (A)", patterns); // Assert Assert.That(result, Is.EqualTo("Room (A)")); } [Test] public void Match_LocationWithWhitespace_Trims_ReturnsLocation() { // Arrange var patterns = new List { "Room *" }; // Act var result = LocationPatternMatcher.Match(" Room 101 ", patterns); // Assert // LocationPatternMatcher returns the matched location after normalization (trim) Assert.That(result, Is.EqualTo("Room 101")); } }