NExpect 1.0.248

The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org. Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package NExpect --version 1.0.248
NuGet\Install-Package NExpect -Version 1.0.248
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NExpect" Version="1.0.248" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add NExpect --version 1.0.248
#r "nuget: NExpect, 1.0.248"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install NExpect as a Cake Addin
#addin nuget:?package=NExpect&version=1.0.248

// Install NExpect as a Cake Tool
#tool nuget:?package=NExpect&version=1.0.248

NExpect

An assertions framework for .NET with a BDD-like feel, inspired by Chai and Jasmine, designed to be user-extensible

Build and Test

Nuget current version badge

Goals

  • Expect(NExpect).To.Be.Readable();
    • Because code is for co-workers, not compilers. And your tests are part of your documentation.
  • Expect(NExpect).To.Be.Expressive();
    • Because the intent of a test should be easy to understand. The reader can delve into the details when she cares to.
  • Expect(NExpect).To.Be.Extensible();
    • Because I can't predict every use-case. I believe that your assertions framework should enable expressive, readable tests through extension.

Tutorial / blog posts:

https://fluffynuts.github.io/NExpect dev.to

Usage

  1. Download from nuget.org: install-package nexpect
  2. Import Expectations statically:
using static NExpect.Expectations;
  1. Expect inside your tests, with fluent syntax:
// simple equality checks
Expect(1).To.Equal(1);
Expect(true).To.Not.Be.False(); // alt. grammar
Expect(null).To.Be.Null();
// - with negation, order doesn't matter
Expect("moo").Not.To.Equal("cow");
Expect("moo").To.Not.Equal("cow");
Expect(true).Not.To.Be.False();
Expect(false).To.Not.Be.True();

// exceptions
Expect(() => { }).Not.To.Throw();
Expect(() =>
  {
    throw new ArgumentException("moo", "moo cow");
  }).To.Throw<ArgumentException>()
  .With.Message.Containing("moo")
  .And.("cow");

// smarter string tests, with fluency
Expect(someString).To.Contain("moo").And("cow");
Expect("moo, said the cow")
    .To.Start.With("moo")
    .And.Contain("said")
    .Then("the")
    .And.End.With("cow");

// collection tests
Expect(someCollection).To.Contain.Exactly(2)
  .Matched.By(item => item.IsWhatWeWant());
Expect(someCollection).To.Contain.Only(1)
  .Deep.Equal.To(new { id = 42, name = "Douglas" });
Expect(someFlags).To.Contain.At.Least(3)
  .Equal.To(true);
Expect(new[] { 1, 2, 3 })
  .To.Be.Ordered.Ascending();
Expect(new[] { "c", "b", "a" })
  .To.Be.Ordered.Descending();

// type testing
Expect(someObject).To.Be
  .An.Instance.Of<Cow>();

// deep and intersection equality testing
var person = new {
  id = 1,
  name = "bob"
};
Expect(person)
  .To.Deep.Equal(new { id = 1, name = "bob" });
Expect(person)
  .To.Intersection.Equal(new { name = "bob" });

Extending

Mostly, you can extend by adding extension methods for ICanAddMatcher<T> where T is the type you want. You can also extend at any point in the grammar -- some of the "better" points are ITo<T>, IBe<T>, IHave<T>, IA<T>, IAn<T>. You will need another namespace import:

using NExpect.MatcherLogic

And your extension methods can be like:

public static class MyMatchers
{
  public static void Five(this IBe<int> continuation)
  {
    continuation.AddMatcher(actual =>
    {
      var passed = actual == 5;
      var message = passed
                    ? $"Expected {actual} not to be 5"
                    : $"Expected {actual} to be 5";
      return new MatcherResult(passed, message);
    });
  }
}
// somewhere else...
[Test]
public void FifteenDividedByThree_ShouldEqual_Five()
{
  var result = 15 / 3;
  Expect(result).To.Be.Five();
}
// Yes, yes, simple example is simple.

If you've ever written a Jasmine matcher, this should feel familiar.

If you have a bunch of existing expectations that you'd like to wrap up into a nicely-named matcher, .Compose has you covered:

// before
var cow = animalFactory.MakeCow();
var beetle = animalFactory.MakeBeetle();

// animal factory should make a Jersey cow
Expect(cow.Classification).To.Equal("Mammal");
Expect(cow.Legs).To.Equal(4);
Expect(cow.HasTail).To.Be.True();
Expect(cow.HasHorns).To.Be.True();
Expect(cow.HasSpots).To.Be.True();

// Animal factory should make a rhinoceros beetle
Expect(beetle.Classification).To.Equal("Insect");
Expect(beetle.Legs).To.Equal(6);
Expect(beetle.HasTail).To.Be.False();
Expect(beetle.HasHorns).To.Be.True();
Expect(beetle.HasSpots).To.Be.False();
// after
var cow = animalFactory.MakeJerseyCow();
var beetle = animalFactory.MakeRhinocerosBeetle();

Expect(cow).To.Be.A.JerseyCow();
Expect(beetle).To.Be.A.RhinocerosBeetle();


// elsewhere:

public static class AnimalMatchers
{
  // the IMore<T> interface allows fluent chaining of expectations
  //  eg:
  //  Expect(cow).To.Be.A.JerseyCow()
  //     .And
  //     .Not.To.Be.A.FrieslandCow();
  public static IMore<Animal> JerseyCow(this IA<Animal> a)
  {
    return a.Compose(actual =>
    {
      Expect(cow.Classification).To.Equal("Mammal");
      Expect(cow.Legs).To.Equal(4);
      Expect(cow.HasTail).To.Be.True();
      Expect(cow.HasHorns).To.Be.True();
      Expect(cow.HasSpots).To.Be.True();
    });
  }
  public static IMore<Animal> RhinocerosBeetle(this IA<Animal> a)
  {
    return a.Compose(actual =>
    {
      Expect(beetle.Classification).To.Equal("Insect");
      Expect(beetle.Legs).To.Equal(6);
      Expect(beetle.HasTail).To.Be.False();
      Expect(beetle.HasHorns).To.Be.True();
      Expect(beetle.HasSpots).To.Be.False();
    });
  }
}

When one of the inner expectations fails, NExpect attempts to construct a nice failure message. As with all expectations, you can always make failures easier to understand with a custom message string or generator:

using NExpect.Implementations;
using NExpect.MatcherLogic;
using NExpect;
using static NExpect.Expectations;

public static class AnimalMatchers
{
  public static IMore<Animal> JerseyCow(this IA<Animal> a)
  {
    return a.Compose(actual =>
    {
      // the Stringify extension method, available on all types,
      // comes from NExpect.Implementation.MessageHelpers and
      // produces a string representation of the object it's
      // operating on which is similar to JSON, so it's easier
      // to read what the object was
      var customMessage = $"Expected {actual.Stringify()} to be a cow";
      Expect(cow.Classification).To.Equal("Mammal", customMessage);
      Expect(cow.Legs).To.Equal(4, customMessage);
      Expect(cow.HasTail).To.Be.True(customMessage);
      Expect(cow.HasHorns).To.Be.True(customMessage);
      Expect(cow.HasSpots).To.Be.True(customMessage);
    });
  }
  public static IMore<Animal> RhinocerosBeetle(this IA<Animal> a)
  {
    return a.Compose(actual =>
    {
      // we can use a generator func to delay generation of the message
      //  which is especially helpful if message generation is expensive
      //  and we'd only like to spend that cpu time on a failure
      Func<string> customMessageGenerator = () => $"Expected {actual.Stringify()} to be a cow";
      Expect(beetle.Classification).To.Equal("Insect", customMessageGenerator);
      Expect(beetle.Legs).To.Equal(6, customMessageGenerator);
      Expect(beetle.HasTail).To.Be.False(customMessageGenerator);
      Expect(beetle.HasHorns).To.Be.True(customMessageGenerator);
      Expect(beetle.HasSpots).To.Be.False(customMessageGenerator);
    });
  }
}
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net452 is compatible.  net46 was computed.  net461 was computed.  net462 is compatible.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • .NETFramework 4.5.2

    • No dependencies.
  • .NETFramework 4.6.2

    • No dependencies.
  • .NETStandard 2.0

    • No dependencies.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on NExpect:

Package Downloads
NExpect.Matchers.NSubstitute The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This library offers NSubistitute-specific extensions so you can have Expect-style syntax for your NSubstitute assertions. For example, one may previously have done: ``` Expect(result).To.Equal(expected); someService.Received(1).SomeMethodCall(); ``` and now you can keep it consistent: ``` Expect(result).To.Equal(expected); Expect(someService).To.Have.Received(1).SomeMethodCall(); ```

NExpect.Matchers.AspNetCore The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This library adds ASP.Net core extensions for NExpect so you can test your [Route] and [Http*] annotations like so: ``` Expect(typeof(SomeController) .To.Have.Method(nameof(SomeController.MethodName)) .Supporting(HttpMethod.Delete) .And(HttpMethod.Post) .With.Route("first-route") .And.Route("second-route"); ```

NExpect.Matchers.Xml The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This library offers XML-specific assertions so you can, for instance: ``` var doc = XDocument.Parse(someXml); Expect(doc) .To.Have.Element("//path/to/element") .With.Attribute("some-attribute") .Having.Value("expected-attribute-value"); ```

NExpect.Matchers.AspNetMvc The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

This library adds ASP.Net core extensions for NExpect so you can test your [Route] and [Http*] annotations like so: ``` Expect(typeof(SomeController) .To.Have.Method(nameof(SomeController.MethodName)) .Supporting(HttpMethod.Delete) .And(HttpMethod.Post) .With.Route("first-route") .And.Route("second-route"); ```

NExpect.NSubstitute The ID prefix of this package has been reserved for one of the owners of this package by NuGet.org.

NSubstitute extensions for NExpect so you can: ``` Expect(foo).(Not).To.Have.Received().Method(..); ```

GitHub repositories (4)

Showing the top 4 popular GitHub repositories that depend on NExpect:

Repository Stars
clojure/clojure-clr
A port of Clojure to the CLR, part of the Clojure project
apache/logging-log4net
Apache Log4net is a versatile, feature-rich, efficient logging API and backend for .NET
Rohland/htmldiff.net
Html Diff algorithm for .NET
fluffynuts/PeanutButter
Tasty, versatile, nutritious; goes with many things in .net.
Version Downloads Last updated
2.0.101 131 6/11/2024
2.0.100 156 6/10/2024
2.0.99 185 6/5/2024
2.0.98 142 6/3/2024
2.0.97 107 6/3/2024
2.0.96 118 6/3/2024
2.0.95 228 5/17/2024
2.0.94 384 5/17/2024
2.0.93 162 5/17/2024
2.0.92 343 4/29/2024
2.0.91 690 4/17/2024
2.0.90 188 4/15/2024
2.0.89 179 4/8/2024
2.0.88 179 4/5/2024
2.0.87 123 4/5/2024
2.0.86 147 4/5/2024
2.0.85 125 4/5/2024
2.0.84 148 4/4/2024
2.0.83 654 4/3/2024
2.0.82 557 4/2/2024
2.0.81 399 3/13/2024
2.0.80 146 3/13/2024
2.0.79 209 3/11/2024
2.0.78 208 3/5/2024
2.0.77 281 2/27/2024
2.0.76 163 2/26/2024
2.0.75 251 2/22/2024
2.0.74 170 2/22/2024
2.0.73 205 2/19/2024
2.0.72 183 2/15/2024
2.0.71 402 2/13/2024
2.0.70 302 2/13/2024
2.0.69 343 2/7/2024
2.0.68 187 2/6/2024
2.0.67 210 2/5/2024
2.0.66 192 2/2/2024
2.0.65 811 1/30/2024
2.0.64 345 1/18/2024
2.0.63 421 1/15/2024
2.0.62 177 1/12/2024
2.0.61 140 1/12/2024
2.0.60 204 1/10/2024
2.0.59 220 1/9/2024
2.0.58 992 12/13/2023
2.0.57 766 11/28/2023
2.0.56 203 11/28/2023
2.0.55 2,116 11/17/2023
2.0.54 251 11/17/2023
2.0.53 186 11/17/2023
2.0.52 826 10/30/2023
2.0.51 282 10/26/2023
2.0.50 684 10/12/2023
2.0.49 1,583 9/28/2023
2.0.48 529 9/22/2023
2.0.47 185 9/21/2023
2.0.46 226 9/20/2023
2.0.45 380 9/14/2023
2.0.44 182 9/14/2023
2.0.43 727 8/25/2023
2.0.42 209 8/25/2023
2.0.42-2308241227.f6c25ee 64 8/24/2023
2.0.42-2308161448.98b76da 62 8/16/2023
2.0.42-2308161446.ec7a107 59 8/16/2023
2.0.42-2308161429.74c00e2 63 8/16/2023
2.0.41 535 8/14/2023
2.0.40 486 8/4/2023
2.0.39 258 8/4/2023
2.0.38 210 8/4/2023
2.0.37 214 8/4/2023
2.0.36 220 8/4/2023
2.0.35 226 8/4/2023
2.0.34 714 6/22/2023
2.0.33 232 6/22/2023
2.0.32 240 6/22/2023
2.0.32-2306210815 74 6/21/2023
2.0.32-2306210812 47 6/21/2023
2.0.32-2306151149.332886a 72 6/15/2023
2.0.32-2306151140.93d85dc 68 6/15/2023
2.0.32-2306150947.3b80752 69 6/15/2023
2.0.31 372 6/12/2023
2.0.30 464 6/9/2023
2.0.30-2306091428.6fc0bd3 96 6/9/2023
2.0.30-2306091304.51d4d0b 71 6/9/2023
2.0.30-2306091204.1fe4d76 68 6/9/2023
2.0.30-2306090857.5be3155 72 6/9/2023
2.0.30-2306081701.3a525ef 69 6/8/2023
2.0.30-2306081646.5a15be2 67 6/8/2023
2.0.30-2306081628.68f2d91 69 6/8/2023
2.0.30-2306081611.3c4f19f 70 6/8/2023
2.0.30-2306081557.4fa2105 67 6/8/2023
2.0.30-2306081119.fdddf3b 72 6/8/2023
2.0.30-2306081053.68ba9f2 68 6/8/2023
2.0.30-2306080900.1b126b1 70 6/8/2023
2.0.29 784 5/23/2023
2.0.28 412 5/18/2023
2.0.27 336 5/12/2023
2.0.26 306 5/12/2023
2.0.25 439 4/26/2023
2.0.24 9,823 2/1/2023
2.0.23 656 1/30/2023
2.0.22 858 1/26/2023
2.0.21 640 1/25/2023
2.0.20 737 1/25/2023
2.0.19 1,910 11/30/2022
2.0.18 1,525 11/14/2022
2.0.17 4,765 10/19/2022
2.0.16 1,246 10/17/2022
2.0.15 1,179 10/17/2022
2.0.14 1,807 10/3/2022
2.0.13 1,177 10/3/2022
2.0.12 1,256 10/3/2022
2.0.11 1,294 9/27/2022
2.0.10 1,400 9/20/2022
2.0.9 1,379 9/19/2022
2.0.8 1,393 9/15/2022
2.0.7 1,377 9/14/2022
2.0.6 1,248 9/13/2022
2.0.5 1,271 9/13/2022
2.0.4 1,297 9/13/2022
2.0.3 1,321 9/9/2022
2.0.2 1,219 9/9/2022
2.0.1 1,262 9/9/2022
1.0.276 52,987 8/17/2022
1.0.275 1,300 8/17/2022
1.0.274 2,104 7/28/2022
1.0.273 4,970 7/14/2022
1.0.272 1,366 7/14/2022
1.0.271 1,349 7/13/2022
1.0.270 1,565 7/7/2022
1.0.269 1,321 7/7/2022
1.0.268 1,902 6/20/2022
1.0.267 1,514 6/14/2022
1.0.266 1,624 6/9/2022
1.0.265 2,912 5/27/2022
1.0.264 1,486 5/24/2022
1.0.263 1,358 5/23/2022
1.0.262 1,455 5/17/2022
1.0.261 1,346 5/16/2022
1.0.260 1,354 5/16/2022
1.0.259 1,795 5/6/2022
1.0.258 1,349 5/5/2022
1.0.257 1,336 5/5/2022
1.0.256 1,342 5/4/2022
1.0.255 1,379 5/4/2022
1.0.254 2,136 4/5/2022
1.0.253 1,385 4/5/2022
1.0.252 1,339 4/4/2022
1.0.251 1,553 3/22/2022
1.0.250 2,750 2/3/2022
1.0.249 1,426 1/28/2022
1.0.248 1,745 1/27/2022
1.0.247 1,409 1/26/2022
1.0.246 1,378 1/25/2022
1.0.245 1,365 1/18/2022
1.0.244 1,348 1/18/2022
1.0.243 1,219 1/12/2022
1.0.242 1,049 12/10/2021
1.0.241 795 12/10/2021
1.0.240 802 12/10/2021
1.0.239 908 12/6/2021
1.0.238 1,233 12/6/2021
1.0.236 820 12/2/2021
1.0.235 858 12/2/2021
1.0.234 828 12/2/2021
1.0.233 1,037 11/18/2021
1.0.232 816 11/18/2021
1.0.231 1,063 11/9/2021
1.0.230 936 11/9/2021
1.0.227 1,073 10/14/2021
1.0.226 1,196 9/2/2021
1.0.225 839 8/31/2021
1.0.224 864 8/30/2021
1.0.223 996 8/6/2021
1.0.222 850 8/6/2021
1.0.221 866 8/6/2021
1.0.220 888 8/3/2021
1.0.219 940 7/30/2021
1.0.218 994 7/7/2021
1.0.217 789 7/7/2021
1.0.216 823 7/7/2021
1.0.215 863 7/6/2021
1.0.214 860 7/6/2021
1.0.213 809 7/6/2021
1.0.212 21,017 5/14/2021
1.0.211 823 5/11/2021
1.0.210 810 5/11/2021
1.0.209 763 5/11/2021
1.0.208 750 5/11/2021
1.0.207 1,080 5/3/2021
1.0.206 896 5/3/2021
1.0.205 837 5/3/2021
1.0.204 798 5/3/2021
1.0.203 813 4/15/2021
1.0.202 806 4/15/2021
1.0.201 763 4/15/2021
1.0.200 775 4/15/2021
1.0.199 779 4/14/2021
1.0.198 918 3/19/2021
1.0.197 802 3/9/2021
1.0.196 828 3/9/2021
1.0.195 829 3/9/2021
1.0.194 888 3/9/2021
1.0.193 890 3/9/2021
1.0.192 908 3/9/2021
1.0.191 908 2/12/2021
1.0.190 937 1/21/2021
1.0.189 945 1/21/2021
1.0.188 848 1/21/2021
1.0.187 829 1/21/2021
1.0.186 1,153 1/8/2021
1.0.185 887 1/8/2021
1.0.184 5,086 11/13/2020
1.0.183 847 11/13/2020
1.0.182 858 11/13/2020
1.0.181 1,267 10/13/2020
1.0.180 1,025 10/12/2020
1.0.179 1,082 8/31/2020
1.0.178 3,622 8/4/2020
1.0.177 1,005 7/21/2020
1.0.176 916 7/10/2020
1.0.175 974 7/10/2020
1.0.174 3,518 5/20/2020
1.0.173 999 5/20/2020
1.0.172 1,062 5/20/2020
1.0.171 1,038 5/8/2020
1.0.170 1,986 4/9/2020
1.0.169 1,095 4/3/2020
1.0.168 1,014 3/25/2020
1.0.167 1,116 3/23/2020
1.0.166 1,139 2/6/2020
1.0.165 1,146 12/30/2019
1.0.164 1,034 12/28/2019
1.0.163 1,002 12/28/2019
1.0.162 1,390 12/5/2019
1.0.161 991 12/5/2019
1.0.160 1,375 11/20/2019
1.0.159 1,627 10/14/2019
1.0.158 671 10/13/2019
1.0.157 1,128 10/3/2019
1.0.156 1,043 9/17/2019
1.0.155 1,037 9/15/2019
1.0.154 2,733 6/20/2019
1.0.153 1,719 6/20/2019
1.0.152 1,916 6/6/2019
1.0.151 1,725 6/4/2019
1.0.150 1,755 5/25/2019
1.0.149 1,717 5/23/2019
1.0.148 1,687 5/16/2019
1.0.147 1,724 5/16/2019
1.0.146 1,478 5/16/2019
1.0.145 1,448 5/16/2019
1.0.143 2,568 5/14/2019
1.0.142 1,636 5/13/2019
1.0.141 1,382 5/7/2019
1.0.140 1,474 4/16/2019
1.0.139 1,453 4/16/2019
1.0.138 1,368 4/16/2019
1.0.137 1,307 4/16/2019
1.0.136 1,513 1/9/2019
1.0.135 4,800 12/12/2018
1.0.134 1,464 12/12/2018
1.0.132 1,671 8/11/2018
1.0.131 1,614 7/31/2018
1.0.130 1,610 7/25/2018
1.0.129 1,586 7/24/2018
1.0.128 1,609 7/19/2018
1.0.127 1,665 7/4/2018
1.0.126 1,704 6/20/2018
1.0.125 1,704 6/19/2018
1.0.124 1,753 5/24/2018
1.0.123 1,690 5/18/2018
1.0.122 1,838 5/17/2018
1.0.121 1,816 4/29/2018
1.0.120 1,795 4/29/2018
1.0.119 1,767 4/27/2018
1.0.118 1,726 4/26/2018
1.0.117 1,703 4/26/2018
1.0.116 1,705 4/25/2018
1.0.115 1,600 4/23/2018
1.0.114 1,733 4/12/2018
1.0.113 1,781 4/11/2018
1.0.112 1,773 4/4/2018
1.0.111 1,719 4/3/2018
1.0.110 1,718 4/2/2018
1.0.109 1,739 3/29/2018
1.0.108 1,726 3/28/2018
1.0.107 1,737 3/22/2018
1.0.106 1,747 3/22/2018
1.0.105 1,901 2/28/2018
1.0.104 1,816 2/26/2018
1.0.103 1,741 2/25/2018
1.0.102 1,736 2/24/2018
1.0.101 1,612 2/23/2018
1.0.100 1,895 2/23/2018
1.0.99 1,788 1/16/2018
1.0.98 1,788 12/20/2017
1.0.97 1,767 12/10/2017
1.0.96 1,696 12/7/2017
1.0.95 1,732 12/7/2017
1.0.94 1,641 12/6/2017
1.0.93 1,778 12/6/2017
1.0.92 1,695 11/30/2017
1.0.91 1,647 11/30/2017
1.0.90 1,644 11/28/2017
1.0.89 1,600 11/28/2017
1.0.88 1,892 10/18/2017
1.0.87 1,855 10/16/2017
1.0.86 1,853 10/16/2017
1.0.85 1,880 10/15/2017
1.0.84 1,876 10/6/2017
1.0.83 1,895 10/6/2017
1.0.82 1,886 10/5/2017
1.0.81 1,881 10/4/2017
1.0.80 1,914 9/30/2017
1.0.79 2,114 9/28/2017
1.0.78 1,827 9/27/2017
1.0.77 1,855 9/26/2017
1.0.76 1,834 9/26/2017
1.0.75 1,861 9/26/2017
1.0.74 1,821 9/26/2017
1.0.73 1,835 9/26/2017
1.0.72 1,907 9/21/2017
1.0.71 1,903 9/20/2017
1.0.70 1,849 9/20/2017
1.0.69 1,856 9/20/2017
1.0.68 1,857 9/20/2017
1.0.67 1,848 9/18/2017
1.0.66 1,908 9/18/2017
1.0.65 1,874 9/18/2017
1.0.64 1,873 9/18/2017
1.0.63 1,851 9/17/2017
1.0.62 1,838 9/17/2017
1.0.61 1,866 9/17/2017
1.0.60 1,904 9/15/2017
1.0.59 1,889 9/15/2017
1.0.58 1,874 9/12/2017
1.0.57 1,840 9/12/2017
1.0.56 1,873 9/12/2017
1.0.55 1,885 9/12/2017
1.0.54 1,850 9/12/2017
1.0.53 1,877 9/11/2017
1.0.52 1,865 9/11/2017
1.0.51 1,856 9/8/2017
1.0.50 1,875 9/8/2017
1.0.49 1,895 9/6/2017
1.0.48 1,873 9/6/2017
1.0.47 1,893 9/5/2017
1.0.46 1,895 9/5/2017
1.0.45 1,877 9/1/2017
1.0.44 1,874 8/31/2017
1.0.43 1,899 8/31/2017
1.0.42 1,895 8/31/2017
1.0.41 1,879 8/31/2017
1.0.40 1,905 8/31/2017
1.0.39 1,935 8/30/2017
1.0.38 1,670 8/28/2017
1.0.37 1,703 8/22/2017
1.0.36 1,673 8/22/2017
1.0.35 1,653 8/22/2017
1.0.34 1,648 8/21/2017
1.0.33 1,650 8/17/2017
1.0.32 1,694 8/16/2017
1.0.31 1,678 8/16/2017
1.0.30 1,668 8/15/2017
1.0.29 1,650 8/15/2017
1.0.28 1,717 8/15/2017
1.0.27 1,722 8/14/2017
1.0.26 1,649 8/11/2017
1.0.25 1,660 8/11/2017
1.0.24 1,639 8/9/2017
1.0.21 1,660 8/7/2017
1.0.19 1,704 8/7/2017
1.0.17 1,693 8/7/2017
1.0.15 1,681 8/4/2017
1.0.13 1,669 8/4/2017
1.0.11 1,683 8/3/2017
1.0.9 1,700 7/23/2017
1.0.8 1,675 7/23/2017
1.0.7 1,661 7/23/2017
1.0.6 1,670 7/23/2017
1.0.5 1,682 7/22/2017
1.0.4 1,680 7/22/2017
1.0.3 1,681 7/22/2017
1.0.1 1,794 7/21/2017
1.0.0 1,688 7/20/2017