Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

True filter and Interval filter #34

Merged
merged 3 commits into from
Apr 16, 2021
Merged
Show file tree
Hide file tree
Changes from all 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
53 changes: 53 additions & 0 deletions Raygun.Druid4Net.Tests/Fluent/Filters/IntervalFilterTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
using System;
using System.Linq;
using NUnit.Framework;
using Raygun.Druid4Net.Fluent.Filters;

namespace Raygun.Druid4Net.Tests.Fluent.Filters
{
[TestFixture]
public class IntervalFilterTests
{
private const string TestDimension = "__time";

private static readonly Interval TestIntervalA = new Interval(DateTime.Now.Subtract(new TimeSpan(1, 0, 0)), DateTime.Now);

private static readonly Interval TestIntervalB = new Interval(DateTime.Now.Subtract(new TimeSpan(2, 0, 0)), DateTime.Now);

[Test]
public void Constructor_TypeIsCorrect()
{
var filter = new IntervalFilter(TestDimension, TestIntervalA);
Assert.That(filter.Type, Is.EqualTo("interval"));
}

[Test]
public void Constructor_WithSingleInterval_PropertiesAreSet()
{
var filter = new IntervalFilter(TestDimension, TestIntervalA);
Assert.That(filter.Dimension, Is.EqualTo(TestDimension));
Assert.That(filter.Intervals.Count, Is.EqualTo(1));
Assert.That(filter.Intervals[0], Is.EqualTo(TestIntervalA.ToInterval()));
}

[Test]
public void Constructor_WithManyParameterIntervals_PropertiesAreSet()
{
var filter = new IntervalFilter(TestDimension, TestIntervalA, TestIntervalB);
Assert.That(filter.Dimension, Is.EqualTo(TestDimension));
Assert.That(filter.Intervals.Count, Is.EqualTo(2));
Assert.That(filter.Intervals[0], Is.EqualTo(TestIntervalA.ToInterval()));
Assert.That(filter.Intervals[1], Is.EqualTo(TestIntervalB.ToInterval()));
}

[Test]
public void Constructor_WithManyEnumerableIntervals_PropertiesAreSet()
{
var filter = new IntervalFilter(TestDimension, new []{ TestIntervalA, TestIntervalB });
Assert.That(filter.Dimension, Is.EqualTo(TestDimension));
Assert.That(filter.Intervals.Count, Is.EqualTo(2));
Assert.That(filter.Intervals[0], Is.EqualTo(TestIntervalA.ToInterval()));
Assert.That(filter.Intervals[1], Is.EqualTo(TestIntervalB.ToInterval()));
}
}
}
16 changes: 16 additions & 0 deletions Raygun.Druid4Net.Tests/Fluent/Filters/TrueFilterTests.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
using NUnit.Framework;
using Raygun.Druid4Net.Fluent.Filters;

namespace Raygun.Druid4Net.Tests.Fluent.Filters
{
[TestFixture]
public class TrueFilterTests
{
[Test]
public void Constructor_TypeIsCorrect()
{
var filter = new TrueFilter();
Assert.That(filter.Type, Is.EqualTo("true"));
}
}
}
2 changes: 2 additions & 0 deletions Raygun.Druid4Net.Tests/Raygun.Druid4Net.Tests.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -75,13 +75,15 @@
<Compile Include="Fluent\Filters\AndFilterTests.cs" />
<Compile Include="Fluent\Filters\BoundFilterTests.cs" />
<Compile Include="Fluent\Filters\InFilterTests.cs" />
<Compile Include="Fluent\Filters\IntervalFilterTests.cs" />
<Compile Include="Fluent\Filters\JavaScriptFilterTests.cs" />
<Compile Include="Fluent\Filters\LikeFilterTests.cs" />
<Compile Include="Fluent\Filters\NotFilterTests.cs" />
<Compile Include="Fluent\Filters\OrFilterTests.cs" />
<Compile Include="Fluent\Filters\RegexFilterTests.cs" />
<Compile Include="Fluent\Filters\SearchFilterTests.cs" />
<Compile Include="Fluent\Filters\SelectorFilterTests.cs" />
<Compile Include="Fluent\Filters\TrueFilterTests.cs" />
<Compile Include="Fluent\Granularities\DurationGranularityTests.cs" />
<Compile Include="Fluent\Granularities\PeriodGranularityTests.cs" />
<Compile Include="Fluent\Having\AndHavingSpecTests.cs" />
Expand Down
35 changes: 35 additions & 0 deletions Raygun.Druid4Net/Fluent/Filters/IntervalFilter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
using System.Collections.Generic;

namespace Raygun.Druid4Net.Fluent.Filters
{
public class IntervalFilter : IFilterSpec
{
public string Type => "interval";

public string Dimension { get; }

public List<string> Intervals { get; }

public IntervalFilter(string dimension, params Interval[] intervals)
{
Dimension = dimension;
Intervals = new List<string>();
AddIntervals(intervals);
}

public IntervalFilter(string dimension, IEnumerable<Interval> intervals)
{
Dimension = dimension;
Intervals = new List<string>();
AddIntervals(intervals);
}

private void AddIntervals(IEnumerable<Interval> intervals)
{
foreach (var interval in intervals)
{
Intervals.Add(interval.ToInterval());
}
}
}
}
7 changes: 7 additions & 0 deletions Raygun.Druid4Net/Fluent/Filters/TrueFilter.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
namespace Raygun.Druid4Net.Fluent.Filters
{
public class TrueFilter : IFilterSpec
{
public string Type => "true";
}
}