Skip to content
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
186 changes: 0 additions & 186 deletions Ical.Net.Tests/CalendarEventTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -173,87 +173,13 @@ public static IEnumerable EnsureAutomaticallySetDtStampIsSerializedAsUtcKind_Tes
.Returns(true);
}

[Test]
public void EventWithExDateShouldNotBeEqualToSameEventWithoutExDate()
{
const string icalNoException = @"BEGIN:VCALENDAR
PRODID:-//Telerik Inc.//NONSGML RadScheduler//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:UTC
BEGIN:STANDARD
TZNAME:UTC
TZOFFSETTO:+0000
TZOFFSETFROM:+0000
DTSTART:16010101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=UTC:20161020T170000
DTEND;TZID=UTC:20161020T230000
UID:694f818f-6d67-4307-9c4d-0b5211686ff0
IMPORTANCE:None
RRULE:FREQ=DAILY
END:VEVENT
END:VCALENDAR";

const string icalWithException = @"BEGIN:VCALENDAR
PRODID:-//Telerik Inc.//NONSGML RadScheduler//EN
VERSION:2.0
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VTIMEZONE
TZID:UTC
BEGIN:STANDARD
TZNAME:UTC
TZOFFSETTO:+0000
TZOFFSETFROM:+0000
DTSTART:16010101T000000
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT
DTSTART;TZID=UTC:20161020T170000
DTEND;TZID=UTC:20161020T230000
UID:694f818f-6d67-4307-9c4d-0b5211686ff0
IMPORTANCE:None
RRULE:FREQ=DAILY
EXDATE;TZID=UTC:20161020T170000
END:VEVENT
END:VCALENDAR";

var noException = Calendar.Load(icalNoException).Events.First();
var withException = Calendar.Load(icalWithException).Events.First();

Assert.That(withException, Is.Not.EqualTo(noException));
Assert.That(withException.GetHashCode(), Is.Not.EqualTo(noException.GetHashCode()));
}

private static CalendarEvent GetSimpleEvent() => new CalendarEvent
{
DtStart = new CalDateTime(_now),
DtEnd = new CalDateTime(_later),
Uid = _uid,
};

[Test]
public void RrulesAreSignificantTests()
{
var rrule = new RecurrencePattern(FrequencyType.Daily, 1);
var testRrule = GetSimpleEvent();
testRrule.RecurrenceRules = new List<RecurrencePattern> { rrule };

var simpleEvent = GetSimpleEvent();
Assert.That(testRrule, Is.Not.EqualTo(simpleEvent));
Assert.That(testRrule.GetHashCode(), Is.Not.EqualTo(simpleEvent.GetHashCode()));

var testRdate = GetSimpleEvent();
testRdate.RecurrenceDatesPeriodLists = new List<PeriodList> { new PeriodList { new Period(new CalDateTime(_now)) } };
Assert.That(testRdate, Is.Not.EqualTo(simpleEvent));
Assert.That(testRdate.GetHashCode(), Is.Not.EqualTo(simpleEvent.GetHashCode()));
}

private static List<RecurrencePattern> GetSimpleRecurrenceList()
=> new List<RecurrencePattern> { new RecurrencePattern(FrequencyType.Daily, 1) { Count = 5 } };
private static List<CalDateTime> GetExceptionDates()
Expand Down Expand Up @@ -281,125 +207,13 @@ public void EventWithRecurrenceAndExceptionComparison()

Assert.Multiple(() =>
{
Assert.That(eventB.RecurrenceRules.First(), Is.EqualTo(eventA.RecurrenceRules.First()));
Assert.That(eventB.RecurrenceRules.First().GetHashCode(), Is.EqualTo(eventA.RecurrenceRules.First().GetHashCode()));
Assert.That(eventB.ExceptionDates.GetAllDates().First(), Is.EqualTo(eventA.ExceptionDates.GetAllDates().First()));
Assert.That(eventB.GetHashCode(), Is.EqualTo(eventA.GetHashCode()));
Assert.That(eventB, Is.EqualTo(eventA));
Assert.That(cal2, Is.EqualTo(calendar));
});
}

[Test]
public void AddingExdateToEventShouldNotBeEqualToOriginal()
{
//Create a calendar with an event with a recurrence rule
//Serialize to string, and deserialize
//Change the original calendar.Event to have an ExDate
//Serialize to string, and deserialize
//CalendarEvent and Calendar hash codes and equality should NOT be the same
var serializer = new CalendarSerializer();

var vEvent = GetSimpleEvent();
vEvent.RecurrenceRules = GetSimpleRecurrenceList();
var cal1 = new Calendar();
cal1.Events.Add(vEvent);
var serialized = serializer.SerializeToString(cal1);
var deserializedNoExDate = Calendar.Load(serialized);
Assert.That(deserializedNoExDate, Is.EqualTo(cal1));

vEvent.ExceptionDates.AddRange(GetExceptionDates());
serialized = serializer.SerializeToString(cal1);
var deserializedWithExDate = Calendar.Load(serialized);

Assert.Multiple(() =>
{
Assert.That(deserializedWithExDate.Events.First(), Is.Not.EqualTo(deserializedNoExDate.Events.First()));
Assert.That(deserializedWithExDate.Events.First().GetHashCode(), Is.Not.EqualTo(deserializedNoExDate.Events.First().GetHashCode()));
Assert.That(deserializedWithExDate, Is.Not.EqualTo(deserializedNoExDate));
});
}

[Test]
public void ChangingRrulesShouldNotBeEqualToOriginalEvent()
{
var eventA = GetSimpleEvent();
eventA.RecurrenceRules = GetSimpleRecurrenceList();

var eventB = GetSimpleEvent();
eventB.RecurrenceRules = GetSimpleRecurrenceList();
Assert.Multiple(() =>
{
Assert.That(ReferenceEquals(eventA, eventB), Is.False);
Assert.That(eventB, Is.EqualTo(eventA));
});

var foreverDailyRule = new RecurrencePattern(FrequencyType.Daily, 1);
eventB.RecurrenceRules = new List<RecurrencePattern> { foreverDailyRule };

Assert.That(eventB, Is.Not.EqualTo(eventA));
Assert.That(eventB.GetHashCode(), Is.Not.EqualTo(eventA.GetHashCode()));
}

[Test]
public void EventsDifferingByDtStampAreEqual()
{
const string eventA = @"BEGIN:VCALENDAR
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 2.2//EN
VERSION:2.0
BEGIN:VEVENT
ATTACH;FMTTYPE=application/json;VALUE=BINARY;ENCODING=BASE64:eyJzdWJqZWN0I
joiSFAgQ29hdGVyIGFuZCBDdXR0ZXIgQ2xlYW51cCIsInVuaXF1ZUlkZW50aWZpZXIiOiIwND
EwNzI1NGRjNWM5MDk0YWY3MWEwZTE5N2U2NWE1NTdkZmJjYjg0IiwiaWNhbFN0cmluZyI6IiI
sImxhYm9yRG93bnRpbWVzIjpbXSwiZGlzYWJsZWRFcXVpcG1lbnQiOlt7ImRpc2FibGVkRXF1
aXBtZW50SW5zdGFuY2VOYW1lcyI6WyJEaWdpdGFsIFByaW50XFxIUCAyOCIsIkRpZ2l0YWwgU
HJpbnRcXEhQIDQ0Il0sImZ1bGxUaW1lRXF1aXZhbGVudHNDb3VudCI6MC4wfV0sIm1vZGVzTm
90QWxsb3dlZCI6W10sInJhd01hdGVyaWFsc05vdEFsbG93ZWQiOltdLCJsYWJvckFsbG9jYXR
pb25zIjpbXX0=
DTEND;TZID=UTC:20150615T055000
DTSTAMP:20161011T195316Z
DTSTART;TZID=UTC:20150615T054000
EXDATE;TZID=UTC:20151023T054000
IMPORTANCE:None
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA
UID:04107254dc5c9094af71a0e197e65a557dfbcb84
END:VEVENT
END:VCALENDAR";

const string eventB = @"BEGIN:VCALENDAR
PRODID:-//github.com/rianjs/ical.net//NONSGML ical.net 2.2//EN
VERSION:2.0
BEGIN:VEVENT
ATTACH;FMTTYPE=application/json;VALUE=BINARY;ENCODING=BASE64:eyJzdWJqZWN0I
joiSFAgQ29hdGVyIGFuZCBDdXR0ZXIgQ2xlYW51cCIsInVuaXF1ZUlkZW50aWZpZXIiOiIwND
EwNzI1NGRjNWM5MDk0YWY3MWEwZTE5N2U2NWE1NTdkZmJjYjg0IiwiaWNhbFN0cmluZyI6IiI
sImxhYm9yRG93bnRpbWVzIjpbXSwiZGlzYWJsZWRFcXVpcG1lbnQiOlt7ImRpc2FibGVkRXF1
aXBtZW50SW5zdGFuY2VOYW1lcyI6WyJEaWdpdGFsIFByaW50XFxIUCAyOCIsIkRpZ2l0YWwgU
HJpbnRcXEhQIDQ0Il0sImZ1bGxUaW1lRXF1aXZhbGVudHNDb3VudCI6MC4wfV0sIm1vZGVzTm
90QWxsb3dlZCI6W10sInJhd01hdGVyaWFsc05vdEFsbG93ZWQiOltdLCJsYWJvckFsbG9jYXR
pb25zIjpbXX0=
DTEND;TZID=UTC:20150615T055000
DTSTAMP:20161024T201419Z
DTSTART;TZID=UTC:20150615T054000
EXDATE;TZID=UTC:20151023T054000
IMPORTANCE:None
RRULE:FREQ=WEEKLY;BYDAY=MO,TU,WE,TH,FR,SA
UID:04107254dc5c9094af71a0e197e65a557dfbcb84
END:VEVENT
END:VCALENDAR";

var calendarA = Calendar.Load(eventA);
var calendarB = Calendar.Load(eventB);

Assert.Multiple(() =>
{
Assert.That(calendarB.Events.First().GetHashCode(), Is.EqualTo(calendarA.Events.First().GetHashCode()));
Assert.That(calendarB.Events.First(), Is.EqualTo(calendarA.Events.First()));
Assert.That(calendarB.GetHashCode(), Is.EqualTo(calendarA.GetHashCode()));
Assert.That(calendarB, Is.EqualTo(calendarA));
});
}

[Test]
public void EventResourcesCanBeZeroedOut()
{
Expand Down
36 changes: 1 addition & 35 deletions Ical.Net.Tests/CopyComponentTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -20,39 +20,6 @@ namespace Ical.Net.Tests;
[TestFixture]
public class CopyComponentTests
{
[Test, TestCaseSource(nameof(CopyCalendarTest_TestCases)), Category("Copy tests")]
public void CopyCalendarTest(string calendarString)
{
var iCal1 = Calendar.Load(calendarString)!;
var iCal2 = iCal1.Copy<Calendar>();
SerializationTests.CompareCalendars(iCal1, iCal2);
}

public static IEnumerable CopyCalendarTest_TestCases()
{
yield return new TestCaseData(IcsFiles.Attachment3).SetName("Attachment3");
yield return new TestCaseData(IcsFiles.Bug2148092).SetName("Bug2148092");
yield return new TestCaseData(IcsFiles.CaseInsensitive1).SetName("CaseInsensitive1");
yield return new TestCaseData(IcsFiles.CaseInsensitive2).SetName("CaseInsensitive2");
yield return new TestCaseData(IcsFiles.CaseInsensitive3).SetName("CaseInsensitive3");
yield return new TestCaseData(IcsFiles.Categories1).SetName("Categories1");
yield return new TestCaseData(IcsFiles.Duration1).SetName("Duration1");
yield return new TestCaseData(IcsFiles.Encoding1).SetName("Encoding1");
yield return new TestCaseData(IcsFiles.Event1).SetName("Event1");
yield return new TestCaseData(IcsFiles.Event2).SetName("Event2");
yield return new TestCaseData(IcsFiles.Event3).SetName("Event3");
yield return new TestCaseData(IcsFiles.Event4).SetName("Event4");
yield return new TestCaseData(IcsFiles.GeographicLocation1).SetName("GeographicLocation1");
yield return new TestCaseData(IcsFiles.Language1).SetName("Language1");
yield return new TestCaseData(IcsFiles.Language2).SetName("Language2");
yield return new TestCaseData(IcsFiles.Language3).SetName("Language3");
yield return new TestCaseData(IcsFiles.TimeZone1).SetName("TimeZone1");
yield return new TestCaseData(IcsFiles.TimeZone2).SetName("TimeZone2");
yield return new TestCaseData(IcsFiles.TimeZone3).SetName("TimeZone3");
yield return new TestCaseData(IcsFiles.XProperty1).SetName("XProperty1");
yield return new TestCaseData(IcsFiles.XProperty2).SetName("XProperty2");
}

private static readonly DateTime _now = DateTime.SpecifyKind(DateTime.Now, DateTimeKind.Unspecified);
private static readonly DateTime _later = _now.AddHours(1);

Expand Down Expand Up @@ -95,7 +62,6 @@ public void CopyCalendarEventTest()
Assert.That(copy.Resources[0], Is.Not.EqualTo(orig.Resources[0]));

Assert.That(resourcesCopyFromOrig, Is.EquivalentTo(orig.Resources));
Assert.That(copy.GeographicLocation, Is.EqualTo(orig.GeographicLocation));
Assert.That(copy.Transparency, Is.EqualTo(orig.Transparency));

Assert.That(Regex.Matches(serializedOrig, uidPattern, RegexOptions.Compiled, TimeSpan.FromSeconds(100)), Has.Count.EqualTo(1));
Expand Down Expand Up @@ -142,7 +108,7 @@ public void CopyAlarmTest()
Assert.Multiple(() =>
{
Assert.That(copy.Action, Is.EqualTo(orig.Action));
Assert.That(copy.Trigger, Is.EqualTo(orig.Trigger));
Assert.That(copy.Trigger?.DateTime, Is.EqualTo(orig.Trigger.DateTime));
Assert.That(copy.Description, Is.EqualTo(orig.Description));
});
}
Expand Down
Loading
Loading