[
  {
    "path": ".github/workflows/main.yml",
    "content": "name: Build and deploy package\n\non:\n  push:\n    branches:\n      - main\n\njobs:\n  build-and-deploy:\n    runs-on: ubuntu-latest\n\n    steps:\n    - uses: actions/checkout@main\n\n    - name: Set up .NET Core\n      uses: actions/setup-dotnet@v1\n      with:\n        dotnet-version: '5.0.x'    \n\n    - name: Build with dotnet\n      run: dotnet build --configuration Release\n\n    - name: Test\n      run: dotnet test\n\n    - name: Create the Package\n      run: dotnet pack --configuration Release\n\n    - name: Publish\n      run: dotnet nuget push \"Flunt/bin/Release/*.nupkg\" -k ${{ secrets.NUGET_TOKEN }} -s https://api.nuget.org/v3/index.json"
  },
  {
    "path": ".gitignore",
    "content": "## Ignore Visual Studio temporary files, build results, and\n## files generated by popular Visual Studio add-ons.\n\n.vscode/*\n!.vscode/settings.json\n!.vscode/tasks.json\n!.vscode/launch.json\n!.vscode/extensions.json\n.DS_Store\n.vscode\n\n# User-specific files\n*.suo\n*.user\n*.userosscache\n*.sln.docstates\n\n# User-specific files (MonoDevelop/Xamarin Studio)\n*.userprefs\n\n# Build results\n[Dd]ebug/\n[Dd]ebugPublic/\n[Rr]elease/\n[Rr]eleases/\nx64/\nx86/\nbld/\n[Bb]in/\n[Oo]bj/\n[Ll]og/\n\n# Visual Studio 2015 cache/options directory\n.vs/\n# Uncomment if you have tasks that create the project's static files in wwwroot\n#wwwroot/\n\n# MSTest test Results\n[Tt]est[Rr]esult*/\n[Bb]uild[Ll]og.*\n\n# NUNIT\n*.VisualState.xml\nTestResult.xml\n\n# Build Results of an ATL Project\n[Dd]ebugPS/\n[Rr]eleasePS/\ndlldata.c\n\n# DNX\nproject.lock.json\nproject.fragment.lock.json\nartifacts/\n\n*_i.c\n*_p.c\n*_i.h\n*.ilk\n*.meta\n*.obj\n*.pch\n*.pdb\n*.pgc\n*.pgd\n*.rsp\n*.sbr\n*.tlb\n*.tli\n*.tlh\n*.tmp\n*.tmp_proj\n*.log\n*.vspscc\n*.vssscc\n.builds\n*.pidb\n*.svclog\n*.scc\n\n# Chutzpah Test files\n_Chutzpah*\n\n# Visual C++ cache files\nipch/\n*.aps\n*.ncb\n*.opendb\n*.opensdf\n*.sdf\n*.cachefile\n*.VC.db\n*.VC.VC.opendb\n\n# Visual Studio profiler\n*.psess\n*.vsp\n*.vspx\n*.sap\n\n# TFS 2012 Local Workspace\n$tf/\n\n# Guidance Automation Toolkit\n*.gpState\n\n# ReSharper is a .NET coding add-in\n_ReSharper*/\n*.[Rr]e[Ss]harper\n*.DotSettings.user\n\n# JustCode is a .NET coding add-in\n.JustCode\n\n# TeamCity is a build add-in\n_TeamCity*\n\n# DotCover is a Code Coverage Tool\n*.dotCover\n\n# Visual Studio code coverage results\n*.coverage\n*.coveragexml\n\n# NCrunch\n_NCrunch_*\n.*crunch*.local.xml\nnCrunchTemp_*\n\n# MightyMoose\n*.mm.*\nAutoTest.Net/\n\n# Web workbench (sass)\n.sass-cache/\n\n# Installshield output folder\n[Ee]xpress/\n\n# DocProject is a documentation generator add-in\nDocProject/buildhelp/\nDocProject/Help/*.HxT\nDocProject/Help/*.HxC\nDocProject/Help/*.hhc\nDocProject/Help/*.hhk\nDocProject/Help/*.hhp\nDocProject/Help/Html2\nDocProject/Help/html\n\n# Click-Once directory\npublish/\n\n# Publish Web Output\n*.[Pp]ublish.xml\n*.azurePubxml\n# TODO: Comment the next line if you want to checkin your web deploy settings\n# but database connection strings (with potential passwords) will be unencrypted\n*.pubxml\n*.publishproj\n\n# Microsoft Azure Web App publish settings. Comment the next line if you want to\n# checkin your Azure Web App publish settings, but sensitive information contained\n# in these scripts will be unencrypted\nPublishScripts/\n\n# NuGet Packages\n*.nupkg\n# The packages folder can be ignored because of Package Restore\n**/packages/*\n# except build/, which is used as an MSBuild target.\n!**/packages/build/\n# Uncomment if necessary however generally it will be regenerated when needed\n#!**/packages/repositories.config\n# NuGet v3's project.json files produces more ignoreable files\n*.nuget.props\n*.nuget.targets\n\n# Microsoft Azure Build Output\ncsx/\n*.build.csdef\n\n# Microsoft Azure Emulator\necf/\nrcf/\n\n# Windows Store app package directories and files\nAppPackages/\nBundleArtifacts/\nPackage.StoreAssociation.xml\n_pkginfo.txt\n\n# Visual Studio cache files\n# files ending in .cache can be ignored\n*.[Cc]ache\n# but keep track of directories ending in .cache\n!*.[Cc]ache/\n\n# Others\nClientBin/\n~$*\n*~\n*.dbmdl\n*.dbproj.schemaview\n*.jfm\n*.pfx\n*.publishsettings\nnode_modules/\norleans.codegen.cs\n\n# Since there are multiple workflows, uncomment next line to ignore bower_components\n# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)\n#bower_components/\n\n# RIA/Silverlight projects\nGenerated_Code/\n\n# Backup & report files from converting an old project file\n# to a newer Visual Studio version. Backup files are not needed,\n# because we have git ;-)\n_UpgradeReport_Files/\nBackup*/\nUpgradeLog*.XML\nUpgradeLog*.htm\n\n# SQL Server files\n*.mdf\n*.ldf\n\n# Business Intelligence projects\n*.rdl.data\n*.bim.layout\n*.bim_*.settings\n\n# Microsoft Fakes\nFakesAssemblies/\n\n# GhostDoc plugin setting file\n*.GhostDoc.xml\n\n# Node.js Tools for Visual Studio\n.ntvs_analysis.dat\n\n# Visual Studio 6 build log\n*.plg\n\n# Visual Studio 6 workspace options file\n*.opt\n\n# Visual Studio LightSwitch build output\n**/*.HTMLClient/GeneratedArtifacts\n**/*.DesktopClient/GeneratedArtifacts\n**/*.DesktopClient/ModelManifest.xml\n**/*.Server/GeneratedArtifacts\n**/*.Server/ModelManifest.xml\n_Pvt_Extensions\n\n# Paket dependency manager\n.paket/paket.exe\npaket-files/\n\n# FAKE - F# Make\n.fake/\n\n# JetBrains Rider\n.idea/\n*.sln.iml\n\n# CodeRush\n.cr/\n\n# Python Tools for Visual Studio (PTVS)\n__pycache__/\n*.pyc\n\n# Cake - Uncomment if you are using it\n# tools/"
  },
  {
    "path": "Flunt/Flunt.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n\n    <PackageId>Flunt</PackageId>\n    <Version>2.0.5</Version>\n    <icon>https://baltaio.blob.core.windows.net/static/images/icons/flunt-icon.png</icon>\n    <License>MIT</License>\n    <Authors>André Baltieri</Authors>\n    <Company>balta.io</Company>\n    <PackageDescription>Notifications made easy</PackageDescription>\n    <Description>Notifications made easy</Description>\n    <RepositoryUrl>https://github.com/andrebaltieri/Flunt</RepositoryUrl>\n    <PackageProjectUrl>https://github.com/andrebaltieri/Flunt</PackageProjectUrl>\n    <PackageLicenseExpression>MIT</PackageLicenseExpression>\n    <PackageIcon>icon.png</PackageIcon>\n    <PackageTags>Domain;DDD;Notification;Validation;Flunt</PackageTags>\n    <ReleaseNotes>Breaking changes from v1.5, please, visit our GitHub before migrating.</ReleaseNotes>\n    <Title>Flunt</Title>\n    <Summary>Flunt is a fluent way to use Notification Pattern with your entities, concentrating every change you made and easy accessing it when you need.</Summary>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <None Include=\"..\\Media\\icon.png\" Pack=\"true\" PackagePath=\"\\\"/>\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "Flunt/Localization/FluntErrorMessages.cs",
    "content": "﻿namespace Flunt.Localization\n{\n    public static class FluntErrorMessages\n    {\n        public static string AndLocalizationErrorMessageLocalization = \"and\";\n        public static string OrLocalizationErrorMessageLocalization = \"or\";\n        public static string IsFalseLocalizationErrorMessage = $\"should not be true\";\n        public static string IsTrueLocalizationErrorMessage = $\"should not be false\";\n        public static string IsEmptyLocalizationErrorMessage = $\"should be empty\";\n        public static string IsNotEmptyLocalizationErrorMessage = $\"should not be empty\";\n        public static string IsNotNullOrEmptyLocalizationErrorMessage = $\"should not be null or empty\";\n        public static string IsNotNullLocalizationErrorMessage = $\"should not be null\";\n        public static string IsNullLocalizationErrorMessage = $\"should be null\";\n        public static string IsNullOrEmptyLocalizationErrorMessage = $\"should be null or empty\";\n        public static string IsNullOrWhiteSpaceLocalizationErrorMessage = \"should be null or white space\";\n        public static string IsNotNullOrWhiteSpaceLocalizationErrorMessage = \"should not be null or white space\";\n        public static string IsGreaterThanLocalizationErrorMessage = $\"should be greater than\";\n        public static string IsGreaterOrEqualsThanLocalizationErrorMessage = $\"should be greater or equals than\";\n        public static string IsLowerThanLocalizationErrorMessage = $\"should be lower than\";\n        public static string IsLowerOrEqualsThanLocalizationErrorMessage = $\"should be lower or equals than\";\n        public static string IsBetweenLocalizationErrorMessage = $\"should be between\";\n        public static string IsNotBetweenLocalizationErrorMessage = $\"should not be between\";\n        public static string IsMinValueLocalizationErrorMessage = $\"should be\";\n        public static string IsNotMinValueLocalizationErrorMessage = $\"should not be\";\n        public static string IsMaxValueLocalizationErrorMessage = $\"should be\";\n        public static string IsNotMaxValueLocalizationErrorMessage = $\"should not be\";\n        public static string AreEqualsLocalizationErrorMessage = $\"should be equals\";\n        public static string AreNotEqualsLocalizationErrorMessage = $\"should not be equals\";\n        public static string ContainsLocalizationErrorMessage = $\"should contain value\";\n        public static string NotContainsLocalizationErrorMessage = $\"should not contain value\";\n        public static string IsCreditCardLocalizationErrorMessage = $\"should be a credit card number\";\n        public static string MatchesLocalizationErrorMessage = $\"does not matches pattern\";\n        public static string NotMatchesLocalizationErrorMessage = $\"should not matches pattern\";\n        public static string IsEmailLocalizationErrorMessage = $\"should be an email\";\n        public static string IsEmailOrEmptyLocalizationErrorMessage = $\"should be an email or empty\";\n        public static string IsNotEmailLocalizationErrorMessage = $\"should not be an email\";\n        public static string IsUrlLocalizationErrorMessage = \"should be an URL\";\n        public static string IsNotUrlLocalizationErrorMessage = \"should not be an URL\";\n        public static string IsPassportLocalizationErrorMessage = \"should be a passport number\";\n\n        public static string IsFalseErrorMessage(string key) => $\"{key} {IsFalseLocalizationErrorMessage}\";\n        public static string IsTrueErrorMessage(string key) => $\"{key} {IsTrueLocalizationErrorMessage}\";\n        public static string IsEmptyErrorMessage(string key) => $\"{key} {IsEmptyLocalizationErrorMessage}\";\n        public static string IsNotEmptyErrorMessage(string key) => $\"{key} {IsNotEmptyLocalizationErrorMessage}\";\n        public static string IsNotNullOrEmptyErrorMessage(string key) => $\"{key} {IsNotNullOrEmptyLocalizationErrorMessage}\";\n        public static string IsNotNullErrorMessage(string key) => $\"{key} {IsNotNullLocalizationErrorMessage}\";\n        public static string IsNullErrorMessage(string key) => $\"{key} {IsNullLocalizationErrorMessage}\";\n        public static string IsNullOrEmptyErrorMessage(string key) => $\"{key} {IsNullOrEmptyLocalizationErrorMessage}\";\n        public static string IsNullOrWhiteSpaceErrorMessage(string key) => $\"{key} {IsNullOrWhiteSpaceLocalizationErrorMessage}\";\n        public static string IsNotNullOrWhiteSpaceErrorMessage(string key) => $\"{key} {IsNotNullOrWhiteSpaceLocalizationErrorMessage}\";\n        public static string IsGreaterThanErrorMessage(string key, string comparer) => $\"{key} {IsGreaterThanLocalizationErrorMessage} {comparer}\";\n        public static string IsGreaterOrEqualsThanErrorMessage(string key, string comparer) => $\"{key} {IsGreaterOrEqualsThanLocalizationErrorMessage} {comparer}\";\n        public static string IsLowerThanErrorMessage(string key, string comparer) => $\"{key} {IsLowerThanLocalizationErrorMessage} {comparer}\";\n        public static string IsLowerOrEqualsThanErrorMessage(string key, string comparer) => $\"{key} {IsLowerOrEqualsThanLocalizationErrorMessage} {comparer}\";\n        public static string IsBetweenErrorMessage(string key, string start, string end) => $\"{key} {IsBetweenLocalizationErrorMessage} {start} {AndLocalizationErrorMessageLocalization} {end}\";\n        public static string IsNotBetweenErrorMessage(string key, string start, string end) => $\"{key} {IsNotBetweenLocalizationErrorMessage} {start} {AndLocalizationErrorMessageLocalization} {end}\";\n        public static string IsMinValueErrorMessage(string key, string minValue) => $\"{key} {IsMinValueLocalizationErrorMessage} {minValue}\";\n        public static string IsNotMinValueErrorMessage(string key, string minValue) => $\"{key} {IsNotMinValueLocalizationErrorMessage} {minValue}\";\n        public static string IsMaxValueErrorMessage(string key, string maxValue) => $\"{key} {IsMaxValueLocalizationErrorMessage} {maxValue}\";\n        public static string IsNotMaxValueErrorMessage(string key, string maxValue) => $\"{key} {IsNotMaxValueLocalizationErrorMessage} {maxValue}\";\n        public static string AreEqualsErrorMessage(string val, string comparer) => $\"{val} {AreEqualsLocalizationErrorMessage} {comparer}\";\n        public static string AreNotEqualsErrorMessage(string val, string comparer) => $\"{val} {AreNotEqualsLocalizationErrorMessage} {comparer}\";\n        public static string ContainsErrorMessage(string key, string comparer) => $\"{key} {ContainsLocalizationErrorMessage} {comparer}\";\n        public static string NotContainsErrorMessage(string key, string comparer) => $\"{key} {NotContainsLocalizationErrorMessage} {comparer}\";\n        public static string IsCreditCardErrorMessage(string key) => $\"{key} {IsCreditCardLocalizationErrorMessage}\";\n        public static string MatchesErrorMessage(string key, string pattern) => $\"{key} {MatchesLocalizationErrorMessage} {pattern}\";\n        public static string NotMatchesErrorMessage(string key, string pattern) => $\"{key} {NotMatchesLocalizationErrorMessage} {pattern}\";\n        public static string IsEmailErrorMessage(string key) => $\"{key} {IsEmailLocalizationErrorMessage}\";\n        public static string IsEmailOrEmptyErrorMessage(string key) => $\"{key}{IsEmailOrEmptyLocalizationErrorMessage}\";\n        public static string IsNotEmailErrorMessage(string key) => $\"{key} {IsNotEmailLocalizationErrorMessage}\";\n        public static string IsUrlErrorMessage(string key) => $\"{key} {IsUrlLocalizationErrorMessage}\";\n        public static string IsNotUrlErrorMessage(string key) => $\"{key} {IsNotUrlLocalizationErrorMessage}\";\n        public static string IsUrlOrEmptyErrorMessage(string key) => $\"{key} {IsUrlLocalizationErrorMessage} {OrLocalizationErrorMessageLocalization} {IsEmptyLocalizationErrorMessage}\";\n        public static string IsNotUrlOrEmptyErrorMessage(string key) => $\"{key} {IsNotUrlLocalizationErrorMessage} {OrLocalizationErrorMessageLocalization} {IsEmptyLocalizationErrorMessage}\";\n        public static string IsPassportErrorMessage(string key) => $\"{key} {IsPassportLocalizationErrorMessage}\";\n    }\n}\n"
  },
  {
    "path": "Flunt/Localization/FluntFormats.cs",
    "content": "﻿namespace Flunt.Localization\n{\n    public static class FluntFormats\n    {\n        public static string DateFormat = \"MM/DD/yyyy\";\n        public static string DateTimeFormat = \"MM/DD/yyyy hh:mm\";\n    }\n}\n"
  },
  {
    "path": "Flunt/Localization/FluntRegexPatterns.cs",
    "content": "﻿namespace Flunt.Localization\n{\n    public static class FluntRegexPatterns\n    {\n        public static string EmailRegexPattern = @\"^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$\";\n        public static string UrlRegexPattern = @\"^(http|https):(\\/\\/www\\.|\\/\\/www\\.|\\/\\/|\\/\\/)[a-z0-9]+([\\-\\.]{1}[a-z0-9]+)*\\.[a-z]{2,5}(:[0-9]{1,5})?(\\/.*)?$|(http|https):(\\/\\/localhost:\\d*|\\/\\/127\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5]))(:[0-9]{1,5})?(\\/.*)?$\";\n        public static string OnlyNumbersPattern = @\"[^0-9]+\";\n        public static string OnlyLettersAndNumbersPattern = @\"[A-Za-z0-9_-]\";\n        public static string PassportRegexPattern = @\"^(?!^0+$)[a-zA-Z0-9]{3,20}$\";\n    }\n}\n"
  },
  {
    "path": "Flunt/Notifications/INotifiable.cs",
    "content": "﻿using System.Collections.Generic;\n\nnamespace Flunt.Notifications\n{\n    public interface INotifiable\n    {\n        void AddNotifications(IEnumerable<Notification> notifications);\n    }\n}\n"
  },
  {
    "path": "Flunt/Notifications/Notifiable.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\n\nnamespace Flunt.Notifications\n{\n    public abstract class Notifiable<T> where T : Notification\n    {\n        private readonly List<T> _notifications;\n\n        protected Notifiable() => _notifications = new List<T>();\n\n        private T GetNotificationInstance(string key, string message)\n        {\n            return (T)Activator.CreateInstance(typeof(T), new object[] { key, message });\n        }\n\n        public IReadOnlyCollection<T> Notifications => _notifications;\n\n        public void AddNotification(string key, string message)\n        {\n            var notification = GetNotificationInstance(key, message);\n            _notifications.Add(notification);\n        }\n\n        public void AddNotification(T notification)\n        {\n            _notifications.Add(notification);\n        }\n\n        public void AddNotification(Type property, string message)\n        {\n            var notification = GetNotificationInstance(property?.Name, message);\n            _notifications.Add(notification);\n        }\n\n        public void AddNotifications(IReadOnlyCollection<T> notifications)\n        {\n            _notifications.AddRange(notifications);\n        }\n\n        public void AddNotifications(IList<T> notifications)\n        {\n            _notifications.AddRange(notifications);\n        }\n\n        public void AddNotifications(ICollection<T> notifications)\n        {\n            _notifications.AddRange(notifications);\n        }\n\n        public void AddNotifications(Notifiable<T> item)\n        {\n            AddNotifications(item.Notifications);\n        }\n\n        public void AddNotifications(params Notifiable<T>[] items)\n        {\n            foreach (var item in items)\n                AddNotifications(item);\n        }\n\n        public void Clear()\n        {\n            _notifications.Clear();\n        }\n\n        public bool IsValid => _notifications.Any() == false;\n    }\n}\n"
  },
  {
    "path": "Flunt/Notifications/Notification.cs",
    "content": "﻿namespace Flunt.Notifications\n{\n    public class Notification\n    {\n        public Notification()\n        {\n\n        }\n\n        public Notification(string key, string message)\n        {\n            Key = key;\n            Message = message;\n        }\n\n        public string Key { get; set; }\n        public string Message { get; set; }\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/BoolValidationContract.cs",
    "content": "﻿using Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsFalse\n        /// <summary>\n        /// Requires that a bool is false\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsFalse(bool val, string property) =>\n            IsFalse(val, property, FluntErrorMessages.IsFalseErrorMessage(property));\n\n        /// <summary>\n        /// Requires that a bool is false\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsFalse(bool val, string property, string message)\n        {\n            if (val == true)\n                AddNotification(property, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsTrue\n        /// <summary>\n        /// Requires that a bool is true\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsTrue(bool val, string property) =>\n            IsTrue(val, property, FluntErrorMessages.IsTrueErrorMessage(property));\n\n        /// <summary>\n        /// Requires that a bool is true\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsTrue(bool val, string property, string message)\n        {\n            if (val == false)\n                AddNotification(property, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires that a bool is null\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNull(bool? val, string property) =>\n                IsNull(val, property, FluntErrorMessages.IsNullErrorMessage(property));\n\n        /// <summary>\n        /// Requires that a bool is null\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNull(bool? val, string property, string message)\n        {\n            if (val != null)\n                AddNotification(property, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires that a bool is not null\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(bool? val, string property) =>\n            IsNotNull(val, property, FluntErrorMessages.IsNotNullErrorMessage(property));\n\n        /// <summary>\n        /// Requires that a bool is not null\n        /// </summary>\n        /// <param name=\"val\">bool</param>\n        /// <param name=\"property\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(bool? val, string property, string message)\n        {\n            if (val == null)\n                AddNotification(property, message);\n\n            return this;\n        }\n        #endregion\n\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/Contract.cs",
    "content": "﻿using Flunt.Notifications;\nusing System;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T> : Notifiable<Notification>\n    {\n        public Contract<T> Requires()\n        {\n            return this;\n        }\n\n        public Contract<T> Join(params Notifiable<Notification>[] items)\n        {\n            if (items == null) return this;\n            foreach (var notifiable in items)\n            {\n                if (notifiable.IsValid == false)\n                    AddNotifications(notifiable.Notifications);\n            }\n\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/CreditCardValidation.cs",
    "content": "﻿using System.Linq;\nusing System.Text.RegularExpressions;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a string is a Credit Card number\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsCreditCard(string val, string key) =>\n            IsCreditCard(val, key, FluntErrorMessages.IsCreditCardErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is a Credit Card number\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsCreditCard(string val, string key, string message)\n        {\n            val = Regex.Replace(val, FluntRegexPatterns.OnlyNumbersPattern, \"\");\n\n            if (string.IsNullOrWhiteSpace(val))\n            {\n                AddNotification(key, message);\n                return this;\n            }\n\n            var even = false;\n            var checksum = 0;\n\n            foreach (var digit in val.ToCharArray().Reverse())\n            {\n                if (!char.IsDigit(digit))\n                {\n                    AddNotification(val, message);\n                    return this;\n                }\n\n                var value = (digit - '0') * (even ? 2 : 1);\n                even = !even;\n\n                while (value > 0)\n                {\n                    checksum += value % 10;\n                    value /= 10;\n                }\n            }\n\n            if (checksum % 10 != 0)\n                AddNotification(key, message);\n\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/DateTimeValidationContract.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires a date is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(DateTime val, DateTime comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a date is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(DateTime val, DateTime comparer, string key, string message)\n        {\n            if (val <= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires a date is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(DateTime val, DateTime comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a date is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(DateTime val, DateTime comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires a date is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(DateTime val, DateTime comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a date is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(DateTime val, DateTime comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires a date is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(DateTime val, DateTime comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a date is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(DateTime val, DateTime comparer, string key, string message)\n        {\n            if (val > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires a date is null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNull(DateTime? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a date is null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNull(DateTime? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires a date is not null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(DateTime? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a date is not null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(DateTime? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires a date is between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(DateTime val, DateTime start, DateTime end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a date is between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(DateTime val, DateTime start, DateTime end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires a date is not between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(DateTime val, DateTime start, DateTime end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a date is not between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(DateTime val, DateTime start, DateTime end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires a date is min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(DateTime val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, DateTime.MinValue.ToString(FluntFormats.DateTimeFormat)));\n\n\n        /// <summary>\n        /// Requires a date is min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(DateTime val, string key, string message)\n        {\n            if (val != DateTime.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires a date is not min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(DateTime val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, DateTime.MinValue.ToString(FluntFormats.DateTimeFormat)));\n\n\n        /// <summary>\n        /// Requires a date is not min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(DateTime val, string key, string message)\n        {\n            if (val == DateTime.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires a date is max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(DateTime val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, DateTime.MaxValue.ToString(FluntFormats.DateTimeFormat)));\n\n\n        /// <summary>\n        /// Requires a date is max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(DateTime val, string key, string message)\n        {\n            if (val != DateTime.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires a date is not max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(DateTime val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, DateTime.MaxValue.ToString(FluntFormats.DateTimeFormat)));\n\n\n        /// <summary>\n        /// Requires a date is not max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(DateTime val, string key, string message)\n        {\n            if (val == DateTime.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n\n        /// <summary>\n        /// Require dates are equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(DateTime val, DateTime comparer, string key)\n            => AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(FluntFormats.DateTimeFormat), comparer.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Require dates are equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(DateTime val, DateTime comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two dates are not equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(DateTime val, DateTime comparer, string key)\n            => AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(FluntFormats.DateTimeFormat), comparer.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires two dates are not equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(DateTime val, DateTime comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> Contains(DateTime val, IEnumerable<DateTime> list, string key)\n            => Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a list contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> Contains(DateTime val, IEnumerable<DateTime> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list not contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> NotContains(DateTime val, IEnumerable<DateTime> list, string key)\n            => NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a list not contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> NotContains(DateTime val, IEnumerable<DateTime> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/DecimalValidationContract.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, decimal comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, decimal comparer, string key, string message)\n        {\n            if (val <= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, double comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, double comparer, string key, string message) =>\n            IsGreaterThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, float comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, float comparer, string key, string message) =>\n            IsGreaterThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, int comparer, string key, string message) =>\n            IsGreaterThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, long comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(decimal val, long comparer, string key, string message) =>\n            IsGreaterThan(val, (decimal)comparer, key, message);\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, decimal comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, decimal comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, double comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, double comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, float comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, float comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, int comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, long comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(decimal val, long comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (decimal)comparer, key, message);\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, decimal comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, decimal comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, double comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, double comparer, string key, string message) =>\n            IsLowerThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, float comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, float comparer, string key, string message) =>\n            IsLowerThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, int comparer, string key, string message) =>\n            IsLowerThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, long comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(decimal val, long comparer, string key, string message) =>\n            IsLowerThan(val, (decimal)comparer, key, message);\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, decimal comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, decimal comparer, string key, string message)\n        {\n            if (val > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, double comparer, string key) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, double comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, float comparer, string key) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, float comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, int comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, long comparer, string key) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a decimal is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(decimal val, long comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (decimal)comparer, key, message);\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires a decimal has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(decimal val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, decimal.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a decimal has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(decimal val, string key, string message)\n        {\n            if (val != decimal.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires a decimal has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(decimal val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, decimal.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a decimal has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(decimal val, string key, string message)\n        {\n            if (val == decimal.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires a decimal has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(decimal val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, decimal.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a decimal has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(decimal val, string key, string message)\n        {\n            if (val != decimal.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires a decimal has not its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(decimal val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, decimal.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a decimal has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(decimal val, string key, string message)\n        {\n            if (val == decimal.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, decimal comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, decimal comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, int comparer, string key) =>\n            AreEquals(val, (decimal)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, int comparer, string key, string message) =>\n            AreEquals(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, float comparer, string key) =>\n            AreEquals(val, (decimal)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, float comparer, string key, string message) =>\n            AreEquals(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, double comparer, string key) =>\n            AreEquals(val, (decimal)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, double comparer, string key, string message) =>\n            AreEquals(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, long comparer, string key) =>\n            AreEquals(val, (decimal)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(decimal val, long comparer, string key, string message) =>\n            AreEquals(val, (decimal)comparer, key, message);\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, decimal comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, decimal comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, int comparer, string key) =>\n            AreNotEquals(val, (decimal)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, int comparer, string key, string message) =>\n            AreNotEquals(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, float comparer, string key) =>\n            AreNotEquals(val, (decimal)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, float comparer, string key, string message) =>\n            AreNotEquals(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, double comparer, string key) =>\n            AreNotEquals(val, (decimal)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, double comparer, string key, string message) =>\n            AreNotEquals(val, (decimal)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, long comparer, string key) =>\n            AreNotEquals(val, (decimal)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(decimal val, long comparer, string key, string message) =>\n            AreNotEquals(val, (decimal)comparer, key, message);\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires a decimal is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(decimal? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a decimal is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(decimal? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires a decimal is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(decimal? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a decimal is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(decimal? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, decimal start, decimal end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, decimal start, decimal end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, int start, int end, string key) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, int start, int end, string key, string message) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, message);\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, float start, float end, string key) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, float start, float end, string key, string message) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, message);\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, double start, double end, string key) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, double start, double end, string key, string message) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, message);\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, long start, long end, string key) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(decimal val, long start, long end, string key, string message) =>\n            IsBetween(val, (decimal)start, (decimal)end, key, message);\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, decimal start, decimal end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, decimal start, decimal end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, int start, int end, string key) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, int start, int end, string key, string message) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, message);\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, float start, float end, string key) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, float start, float end, string key, string message) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, message);\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, double start, double end, string key) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, double start, double end, string key, string message) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, message);\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, long start, long end, string key) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a decimal is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(decimal val, long start, long end, string key, string message) =>\n            IsNotBetween(val, (decimal)start, (decimal)end, key, message);\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains a decimal\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(decimal val, IEnumerable<decimal> list, string key) =>\n            Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list contains a decimal\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(decimal val, IEnumerable<decimal> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list does not contains a decimal\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(decimal val, IEnumerable<decimal> list, string key) =>\n            NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list does not contains a decimal\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(decimal val, IEnumerable<decimal> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/DocumentValitionContract.cs",
    "content": "﻿using Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a string is a passport number\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsPassport(string val, string key) =>\n            IsPassport(val, key, FluntErrorMessages.IsPassportErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is a passport number\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsPassport(string val, string key, string message) => \n            Matches(val, FluntRegexPatterns.PassportRegexPattern, key, message);\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/DoubleValidationContract.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, double comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, double comparer, string key, string message)\n        {\n            if (val <= (double)comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, decimal comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, decimal comparer, string key, string message) =>\n            IsGreaterThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, float comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, float comparer, string key, string message) =>\n            IsGreaterThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, int comparer, string key, string message) =>\n            IsGreaterThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, long comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(double val, long comparer, string key, string message) =>\n            IsGreaterThan(val, (double)comparer, key, message);\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, double comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, double comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, decimal comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, decimal comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, float comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, float comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, int comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, long comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(double val, long comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (double)comparer, key, message);\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, double comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, double comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, decimal comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, decimal comparer, string key, string message) =>\n            IsLowerThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, float comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, float comparer, string key, string message) =>\n            IsLowerThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, int comparer, string key, string message) =>\n            IsLowerThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, long comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(double val, long comparer, string key, string message) =>\n            IsLowerThan(val, (double)comparer, key, message);\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, double comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, double comparer, string key, string message)\n        {\n            if (val > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, decimal comparer, string key) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, decimal comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, float comparer, string key) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, float comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, int comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, long comparer, string key) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a double is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(double val, long comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (double)comparer, key, message);\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires a double has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(double val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, double.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a double has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(double val, string key, string message)\n        {\n            if (val != double.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires a double has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(double val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, double.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a double has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(double val, string key, string message)\n        {\n            if (val == double.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires a double has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(double val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, double.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a double has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(double val, string key, string message)\n        {\n            if (val != double.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires a double has not its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(double val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, double.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a double has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(double val, string key, string message)\n        {\n            if (val == double.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, double comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, double comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, int comparer, string key) =>\n            AreEquals(val, (double)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, int comparer, string key, string message) =>\n            AreEquals(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, float comparer, string key) =>\n            AreEquals(val, (double)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, float comparer, string key, string message) =>\n            AreEquals(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, decimal comparer, string key) =>\n            AreEquals(val, (double)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, decimal comparer, string key, string message) =>\n            AreEquals(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, long comparer, string key) =>\n            AreEquals(val, (double)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(double val, long comparer, string key, string message) =>\n            AreEquals(val, (double)comparer, key, message);\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, double comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, double comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, int comparer, string key) =>\n            AreNotEquals(val, (double)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, int comparer, string key, string message) =>\n            AreNotEquals(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, float comparer, string key) =>\n            AreNotEquals(val, (double)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, float comparer, string key, string message) =>\n            AreNotEquals(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, decimal comparer, string key) =>\n            AreNotEquals(val, (double)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, decimal comparer, string key, string message) =>\n            AreNotEquals(val, (double)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, long comparer, string key) =>\n            AreNotEquals(val, (double)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(double val, long comparer, string key, string message) =>\n            AreNotEquals(val, (double)comparer, key, message);\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires a double is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(double? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a double is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(double? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires a double is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(double? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a double is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(double? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, double start, double end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, double start, double end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, int start, int end, string key) =>\n            IsBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, int start, int end, string key, string message) =>\n            IsBetween(val, (double)start, (double)end, key, message);\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, float start, float end, string key) =>\n            IsBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, float start, float end, string key, string message) =>\n            IsBetween(val, (double)start, (double)end, key, message);\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, decimal start, decimal end, string key) =>\n            IsBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, decimal start, decimal end, string key, string message) =>\n            IsBetween(val, (double)start, (double)end, key, message);\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, long start, long end, string key) =>\n            IsBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(double val, long start, long end, string key, string message) =>\n            IsBetween(val, (double)start, (double)end, key, message);\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, double start, double end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, double start, double end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, int start, int end, string key) =>\n            IsNotBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, int start, int end, string key, string message) =>\n            IsNotBetween(val, (double)start, (double)end, key, message);\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, float start, float end, string key) =>\n            IsNotBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, float start, float end, string key, string message) =>\n            IsNotBetween(val, (double)start, (double)end, key, message);\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, decimal start, decimal end, string key) =>\n            IsNotBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, decimal start, decimal end, string key, string message) =>\n            IsNotBetween(val, (double)start, (double)end, key, message);\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, long start, long end, string key) =>\n            IsNotBetween(val, (double)start, (double)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a double is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(double val, long start, long end, string key, string message) =>\n            IsNotBetween(val, (double)start, (double)end, key, message);\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains a double\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(double val, IEnumerable<double> list, string key) =>\n            Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list contains a double\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(double val, IEnumerable<double> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list does not contains a double\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(double val, IEnumerable<double> list, string key) =>\n            NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list does not contains a double\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(double val, IEnumerable<double> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/EmailValidationContract.cs",
    "content": "﻿using Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a string is an email\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmail(string val, string key) =>\n            IsEmail(val, key, FluntErrorMessages.IsEmailErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is an email\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmail(string val, string key, string message)\n        {\n            return Matches(val, FluntRegexPatterns.EmailRegexPattern, key, message);\n        }\n\n        /// <summary>\n        /// Requires a string is an email or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmailOrEmpty(string val, string key) =>\n            IsEmailOrEmpty(val, key, FluntErrorMessages.IsEmailOrEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is an email or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmailOrEmpty(string val, string key, string message)\n        {\n            return string.IsNullOrEmpty(val) ?\n                this :\n                IsEmail(val, key, message);\n        }\n\n        /// <summary>\n        /// Requires a string is not an email\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotEmail(string val, string key) =>\n            IsNotEmail(val, key, FluntErrorMessages.IsNotEmailErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is not an email\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotEmail(string val, string key, string message)\n        {\n            return NotMatches(val, FluntRegexPatterns.EmailRegexPattern, key, message);\n        }\n    }\n}"
  },
  {
    "path": "Flunt/Validations/FloatValidationContract.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, float comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, float comparer, string key, string message)\n        {\n            if (val <= (float)comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, decimal comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, decimal comparer, string key, string message) =>\n            IsGreaterThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, double comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, double comparer, string key, string message) =>\n            IsGreaterThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, int comparer, string key, string message) =>\n            IsGreaterThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, long comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(float val, long comparer, string key, string message) =>\n            IsGreaterThan(val, (float)comparer, key, message);\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, float comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, float comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, decimal comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, decimal comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, double comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, double comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, int comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, long comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(float val, long comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (float)comparer, key, message);\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, float comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, float comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, decimal comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, decimal comparer, string key, string message) =>\n            IsLowerThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, double comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, double comparer, string key, string message) =>\n            IsLowerThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, int comparer, string key, string message) =>\n            IsLowerThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, long comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(float val, long comparer, string key, string message) =>\n            IsLowerThan(val, (float)comparer, key, message);\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, float comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, float comparer, string key, string message)\n        {\n            if (val > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, decimal comparer, string key) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, decimal comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, double comparer, string key) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, double comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, int comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, long comparer, string key) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a float is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(float val, long comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (float)comparer, key, message);\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires a float has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(float val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, decimal.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a float has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(float val, string key, string message)\n        {\n            if (val != float.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires a float has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(float val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, decimal.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a float has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(float val, string key, string message)\n        {\n            if (val == float.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires a float has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(float val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, decimal.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a float has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(float val, string key, string message)\n        {\n            if (val != float.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires a float has not its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(float val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, decimal.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a float has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(float val, string key, string message)\n        {\n            if (val == float.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, float comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, float comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, int comparer, string key) =>\n            AreEquals(val, (float)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, int comparer, string key, string message) =>\n            AreEquals(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, double comparer, string key) =>\n            AreEquals(val, (float)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, double comparer, string key, string message) =>\n            AreEquals(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, decimal comparer, string key) =>\n            AreEquals(val, (float)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, decimal comparer, string key, string message) =>\n            AreEquals(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, long comparer, string key) =>\n            AreEquals(val, (float)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(float val, long comparer, string key, string message) =>\n            AreEquals(val, (float)comparer, key, message);\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, float comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, float comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, int comparer, string key) =>\n            AreNotEquals(val, (float)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, int comparer, string key, string message) =>\n            AreNotEquals(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, double comparer, string key) =>\n            AreNotEquals(val, (float)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, double comparer, string key, string message) =>\n            AreNotEquals(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, decimal comparer, string key) =>\n            AreNotEquals(val, (float)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, decimal comparer, string key, string message) =>\n            AreNotEquals(val, (float)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, long comparer, string key) =>\n            AreNotEquals(val, (float)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(float val, long comparer, string key, string message) =>\n            AreNotEquals(val, (float)comparer, key, message);\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires a float is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(float? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a float is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(float? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires a float is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(float? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a float is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(float? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, float start, float end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, float start, float end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, int start, int end, string key) =>\n            IsBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, int start, int end, string key, string message) =>\n            IsBetween(val, (float)start, (float)end, key, message);\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, double start, double end, string key) =>\n            IsBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, double start, double end, string key, string message) =>\n            IsBetween(val, (float)start, (float)end, key, message);\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, decimal start, decimal end, string key) =>\n            IsBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, decimal start, decimal end, string key, string message) =>\n            IsBetween(val, (float)start, (float)end, key, message);\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, long start, long end, string key) =>\n            IsBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(float val, long start, long end, string key, string message) =>\n            IsBetween(val, (float)start, (float)end, key, message);\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, float start, float end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, float start, float end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, int start, int end, string key) =>\n            IsNotBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, int start, int end, string key, string message) =>\n            IsNotBetween(val, (float)start, (float)end, key, message);\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, double start, double end, string key) =>\n            IsNotBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, double start, double end, string key, string message) =>\n            IsNotBetween(val, (float)start, (float)end, key, message);\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, decimal start, decimal end, string key) =>\n            IsNotBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, decimal start, decimal end, string key, string message) =>\n            IsNotBetween(val, (float)start, (float)end, key, message);\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, long start, long end, string key) =>\n            IsNotBetween(val, (float)start, (float)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a float is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(float val, long start, long end, string key, string message) =>\n            IsNotBetween(val, (float)start, (float)end, key, message);\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains a float\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(float val, IEnumerable<float> list, string key) =>\n            Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list contains a float\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(float val, IEnumerable<float> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list does not contains a float\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(float val, IEnumerable<float> list, string key) =>\n            NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list does not contains a float\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(float val, IEnumerable<float> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/GuidValidationContract.cs",
    "content": "﻿using System;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires two Guids are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(Guid val, Guid comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two Guids are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(Guid val, Guid comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two Guids are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(Guid val, Guid comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two Guids are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(Guid val, Guid comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a Guid is empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmpty(Guid val, string key) =>\n            IsEmpty(val, key, FluntErrorMessages.IsEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a Guid is empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmpty(Guid val, string key, string message)\n        {\n            if (val != Guid.Empty)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a Guid is not empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotEmpty(Guid val, string key) =>\n            IsNotEmpty(val, key, FluntErrorMessages.IsNotEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a Guid is not empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotEmpty(Guid val, string key, string message)\n        {\n            if (val == Guid.Empty)\n                AddNotification(key, message);\n\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/IntValidationContract.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, int comparer, string key, string message)\n        {\n            if (val <= (int)comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, decimal comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, decimal comparer, string key, string message) =>\n            IsGreaterThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, double comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, double comparer, string key, string message) =>\n            IsGreaterThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, float comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, float comparer, string key, string message) =>\n            IsGreaterThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, long comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(int val, long comparer, string key, string message) =>\n            IsGreaterThan(val, (int)comparer, key, message);\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, int comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, decimal comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, decimal comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, double comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, double comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, float comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, float comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, long comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(int val, long comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (int)comparer, key, message);\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, int comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, decimal comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, decimal comparer, string key, string message) =>\n            IsLowerThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, double comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, double comparer, string key, string message) =>\n            IsLowerThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, float comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, float comparer, string key, string message) =>\n            IsLowerThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, long comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(int val, long comparer, string key, string message) =>\n            IsLowerThan(val, (int)comparer, key, message);\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, int comparer, string key, string message)\n        {\n            if (val > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, decimal comparer, string key) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, decimal comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, double comparer, string key) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, double comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, float comparer, string key) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, float comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, long comparer, string key) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires an int is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(int val, long comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (int)comparer, key, message);\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires an int has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(int val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, int.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires an int has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(int val, string key, string message)\n        {\n            if (val != int.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires an int has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(int val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, int.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires an int has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(int val, string key, string message)\n        {\n            if (val == int.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires an int has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(int val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, int.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires an int has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(int val, string key, string message)\n        {\n            if (val != int.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires an int has not its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(int val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, int.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires an int has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(int val, string key, string message)\n        {\n            if (val == int.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, int comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, int comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, float comparer, string key) =>\n            AreEquals(val, (int)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, float comparer, string key, string message) =>\n            AreEquals(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, double comparer, string key) =>\n            AreEquals(val, (int)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, double comparer, string key, string message) =>\n            AreEquals(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, decimal comparer, string key) =>\n            AreEquals(val, (int)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, decimal comparer, string key, string message) =>\n            AreEquals(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, long comparer, string key) =>\n            AreEquals(val, (int)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(int val, long comparer, string key, string message) =>\n            AreEquals(val, (int)comparer, key, message);\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, int comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, int comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, float comparer, string key) =>\n            AreNotEquals(val, (int)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, float comparer, string key, string message) =>\n            AreNotEquals(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, double comparer, string key) =>\n            AreNotEquals(val, (int)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, double comparer, string key, string message) =>\n            AreNotEquals(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, decimal comparer, string key) =>\n            AreNotEquals(val, (int)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, decimal comparer, string key, string message) =>\n            AreNotEquals(val, (int)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, long comparer, string key) =>\n            AreNotEquals(val, (int)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(int val, long comparer, string key, string message) =>\n            AreNotEquals(val, (int)comparer, key, message);\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires an int is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(int? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires an int is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(int? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires an int is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(int? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires an int is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(int? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, int start, int end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, int start, int end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, float start, float end, string key) =>\n            IsBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, float start, float end, string key, string message) =>\n            IsBetween(val, (int)start, (int)end, key, message);\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, double start, double end, string key) =>\n            IsBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, double start, double end, string key, string message) =>\n            IsBetween(val, (int)start, (int)end, key, message);\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, decimal start, decimal end, string key) =>\n            IsBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, decimal start, decimal end, string key, string message) =>\n            IsBetween(val, (int)start, (int)end, key, message);\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, long start, long end, string key) =>\n            IsBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(int val, long start, long end, string key, string message) =>\n            IsBetween(val, (int)start, (int)end, key, message);\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, int start, int end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, int start, int end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, float start, float end, string key) =>\n            IsNotBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, float start, float end, string key, string message) =>\n            IsNotBetween(val, (int)start, (int)end, key, message);\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, double start, double end, string key) =>\n            IsNotBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, double start, double end, string key, string message) =>\n            IsNotBetween(val, (int)start, (int)end, key, message);\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, decimal start, decimal end, string key) =>\n            IsNotBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, decimal start, decimal end, string key, string message) =>\n            IsNotBetween(val, (int)start, (int)end, key, message);\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, long start, long end, string key) =>\n            IsNotBetween(val, (int)start, (int)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires an int is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(int val, long start, long end, string key, string message) =>\n            IsNotBetween(val, (int)start, (int)end, key, message);\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains an int\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(int val, IEnumerable<int> list, string key) =>\n            Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list contains an int\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(int val, IEnumerable<int> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list does not contains an int\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(int val, IEnumerable<int> list, string key) =>\n            NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list does not contains an int\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(int val, IEnumerable<int> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/ListValidationContract.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a list is null\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull<TList>(IEnumerable<TList> val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a list is null\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull<TList>(IEnumerable<TList> val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list is not null\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull<TList>(IEnumerable<TList> val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a list is not null\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull<TList>(IEnumerable<TList> val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list contains no elements\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmpty<TList>(IEnumerable<TList> val, string key) =>\n            IsEmpty(val, key, FluntErrorMessages.IsEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a list contains no elements\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsEmpty<TList>(IEnumerable<TList> val, string key, string message)\n        {\n            if (val.Any())\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list contains at least one element\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotEmpty<TList>(IEnumerable<TList> val, string key) =>\n            IsNotEmpty(val, key, FluntErrorMessages.IsNotEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a list contains at least one element\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotEmpty<TList>(IEnumerable<TList> val, string key, string message)\n        {\n            if (val.Any() == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list count is greater than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan<TList>(IEnumerable<TList> val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a list count is greater than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan<TList>(IEnumerable<TList> val, int comparer, string key, string message)\n        {\n            if (val?.Count() <= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list count is greater or equals than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan<TList>(IEnumerable<TList> val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a list count is greater or equals than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan<TList>(IEnumerable<TList> val, int comparer, string key, string message)\n        {\n            if (val?.Count() < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list count is lower than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan<TList>(IEnumerable<TList> val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a list count is lower than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan<TList>(IEnumerable<TList> val, int comparer, string key, string message)\n        {\n            if (val?.Count() >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a list count is lower or equals than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan<TList>(IEnumerable<TList> val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a list count is lower or equals than\n        /// </summary>\n        /// <typeparam name=\"TList\"></typeparam>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan<TList>(IEnumerable<TList> val, int comparer, string key, string message)\n        {\n            if (val?.Count() > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/LongValidationContract.cs",
    "content": "﻿using System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, long comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, long comparer, string key, string message)\n        {\n            if (val <= (long)comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, decimal comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, decimal comparer, string key, string message) =>\n            IsGreaterThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, double comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, double comparer, string key, string message) =>\n            IsGreaterThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, float comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, float comparer, string key, string message) =>\n            IsGreaterThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(long val, int comparer, string key, string message) =>\n            IsGreaterThan(val, (long)comparer, key, message);\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, long comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, long comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, decimal comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, decimal comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, double comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, double comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, float comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, float comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(long val, int comparer, string key, string message) =>\n            IsGreaterOrEqualsThan(val, (long)comparer, key, message);\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, long comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, long comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, decimal comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, decimal comparer, string key, string message) =>\n            IsLowerThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, double comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, double comparer, string key, string message) =>\n            IsLowerThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, float comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, float comparer, string key, string message) =>\n            IsLowerThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(long val, int comparer, string key, string message) =>\n            IsLowerThan(val, (long)comparer, key, message);\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, long comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, long comparer, string key, string message)\n        {\n            if (val >comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, decimal comparer, string key) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, decimal comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, double comparer, string key) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, double comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, float comparer, string key) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, float comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a long is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Message</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(long val, int comparer, string key, string message) =>\n            IsLowerOrEqualsThan(val, (long)comparer, key, message);\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires a long has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(long val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, long.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a long has its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(long val, string key, string message)\n        {\n            if (val != long.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires a long has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(long val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, long.MinValue.ToString()));\n\n        /// <summary>\n        /// Requires a long has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(long val, string key, string message)\n        {\n            if (val == long.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires a long has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(long val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, long.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a long has its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(long val, string key, string message)\n        {\n            if (val != long.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires a long has not its max value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(long val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, long.MaxValue.ToString()));\n\n        /// <summary>\n        /// Requires a long has not its min value\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(long val, string key, string message)\n        {\n            if (val == long.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, long comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, long comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, float comparer, string key) =>\n            AreEquals(val, (long)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, float comparer, string key, string message) =>\n            AreEquals(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, double comparer, string key) =>\n            AreEquals(val, (long)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, double comparer, string key, string message) =>\n            AreEquals(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, decimal comparer, string key) =>\n            AreEquals(val, (long)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, decimal comparer, string key, string message) =>\n            AreEquals(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, int comparer, string key) =>\n            AreEquals(val, (long)comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(long val, int comparer, string key, string message) =>\n            AreEquals(val, (long)comparer, key, message);\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, long comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, long comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, float comparer, string key) =>\n            AreNotEquals(val, (long)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, float comparer, string key, string message) =>\n            AreNotEquals(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, double comparer, string key) =>\n            AreNotEquals(val, (long)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, double comparer, string key, string message) =>\n            AreNotEquals(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, decimal comparer, string key) =>\n            AreNotEquals(val, (long)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, decimal comparer, string key, string message) =>\n            AreNotEquals(val, (long)comparer, key, message);\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, int comparer, string key) =>\n            AreNotEquals(val, (long)comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two decimals are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(long val, int comparer, string key, string message) =>\n            AreNotEquals(val, (long)comparer, key, message);\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires a long is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(long? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a long is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(long? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires a long is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(long? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a long is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(long? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, long start, long end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, long start, long end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, float start, float end, string key) =>\n            IsBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, float start, float end, string key, string message) =>\n            IsBetween(val, (long)start, (long)end, key, message);\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, double start, double end, string key) =>\n            IsBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, double start, double end, string key, string message) =>\n            IsBetween(val, (long)start, (long)end, key, message);\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, decimal start, decimal end, string key) =>\n            IsBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, decimal start, decimal end, string key, string message) =>\n            IsBetween(val, (long)start, (long)end, key, message);\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, int start, int end, string key) =>\n            IsBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(long val, int start, int end, string key, string message) =>\n            IsBetween(val, (long)start, (long)end, key, message);\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, long start, long end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, long start, long end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, float start, float end, string key) =>\n            IsNotBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, float start, float end, string key, string message) =>\n            IsNotBetween(val, (long)start, (long)end, key, message);\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, double start, double end, string key) =>\n            IsNotBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, double start, double end, string key, string message) =>\n            IsNotBetween(val, (long)start, (long)end, key, message);\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, decimal start, decimal end, string key) =>\n            IsNotBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, decimal start, decimal end, string key, string message) =>\n            IsNotBetween(val, (long)start, (long)end, key, message);\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, int start, int end, string key) =>\n            IsNotBetween(val, (long)start, (long)end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(FluntFormats.DateTimeFormat), end.ToString(FluntFormats.DateTimeFormat)));\n\n        /// <summary>\n        /// Requires a long is not between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"start\"></param>\n        /// <param name=\"end\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(long val, int start, int end, string key, string message) =>\n            IsNotBetween(val, (long)start, (long)end, key, message);\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains a long\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(long val, IEnumerable<long> list, string key) =>\n            Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list contains a long\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(long val, IEnumerable<long> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list does not contains a long\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(long val, IEnumerable<long> list, string key) =>\n            NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list does not contains a long\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"list\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(long val, IEnumerable<long> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/ObjectValidationContract.cs",
    "content": "﻿using Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires an object is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(object val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires an object is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(object val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires an object is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(object val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires an object is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(object val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two objects are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(object val, object comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val?.ToString(), comparer?.ToString()));\n\n        /// <summary>\n        /// Requires two objects are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(object val, object comparer, string key, string message)\n        {\n            if (val == null || comparer == null)\n                return this;\n\n            if (val.Equals(comparer) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two objects are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(object val, object comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val?.ToString(), comparer?.ToString()));\n\n        /// <summary>\n        /// Requires two objects are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(object val, object comparer, string key, string message)\n        {\n            if (val == null || comparer == null)\n                return this;\n\n            if (val.Equals(comparer))\n                AddNotification(key, message);\n\n            return this;\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/RegexValidationContract.cs",
    "content": "﻿using System.Text.RegularExpressions;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a string matches a regex pattern\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"pattern\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Matches(string val, string pattern, string key) =>\n            Matches(val, pattern, key, FluntErrorMessages.MatchesErrorMessage(key, pattern));\n\n        /// <summary>\n        /// Requires a string matches a regex pattern\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"pattern\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Matches(string val, string pattern, string key, string message)\n        {\n            if (!Regex.IsMatch(val ?? \"\", pattern))\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string not matches a regex pattern\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"pattern\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotMatches(string val, string pattern, string key) =>\n            NotMatches(val, pattern, key, FluntErrorMessages.NotMatchesErrorMessage(key, pattern));\n\n        /// <summary>\n        /// Requires a string not matches a regex pattern\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"pattern\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotMatches(string val, string pattern, string key, string message)\n        {\n            if (Regex.IsMatch(val ?? \"\", pattern))\n                AddNotification(key, message);\n\n            return this;\n        }\n    }\n}"
  },
  {
    "path": "Flunt/Validations/StringValidationContract.cs",
    "content": "﻿using Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a string is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(string val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNull(string val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(string val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is not null\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(string val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string is null or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNullOrEmpty(string val, string key) =>\n            IsNullOrEmpty(val, key, FluntErrorMessages.IsNullOrEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is null or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNullOrEmpty(string val, string key, string message)\n        {\n            if (string.IsNullOrEmpty(val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string is not null or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNullOrEmpty(string val, string key) =>\n            IsNotNullOrEmpty(val, key, FluntErrorMessages.IsNotNullOrEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is not null or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNullOrEmpty(string val, string key, string message)\n        {\n            if (string.IsNullOrEmpty(val))\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string is null or white space\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNullOrWhiteSpace(string val, string key) =>\n            IsNullOrWhiteSpace(val, key, FluntErrorMessages.IsNullOrWhiteSpaceErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is null or white space\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNullOrWhiteSpace(string val, string key, string message)\n        {\n            if (string.IsNullOrWhiteSpace(val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string is not null or white space\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNullOrWhiteSpace(string val, string key) =>\n            IsNotNullOrWhiteSpace(val, key, FluntErrorMessages.IsNotNullOrWhiteSpaceErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is not null or white space\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotNullOrWhiteSpace(string val, string key, string message)\n        {\n            if (string.IsNullOrWhiteSpace(val))\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two strings are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(string val, string comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val, comparer));\n\n        /// <summary>\n        /// Requires two strings are equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(string val, string comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string have a len\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(string val, int comparer, string key) =>\n            AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a string have a len\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(string val, int comparer, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (val.Length != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires two strings are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(string val, string comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val, comparer));\n\n        /// <summary>\n        /// Requires two strings are not equals\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(string val, string comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string do not have a len\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(string val, int comparer, string key) =>\n            AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a string do not have a len\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(string val, int comparer, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (val.Length == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n\n        /// <summary>\n        /// Requires a string contains\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(string val, string comparer, string key) =>\n            Contains(val, comparer, key, FluntErrorMessages.ContainsErrorMessage(val, comparer));\n\n        /// <summary>\n        /// Requires a string contains\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> Contains(string val, string comparer, string key, string message)\n        {\n            if (string.IsNullOrEmpty(val))\n                val = string.Empty;\n\n            if (val.Contains(comparer) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string not contains\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(string val, string comparer, string key) =>\n            NotContains(val, comparer, key, FluntErrorMessages.NotContainsErrorMessage(val, comparer));\n\n        /// <summary>\n        /// Requires a string not contains\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> NotContains(string val, string comparer, string key, string message)\n        {\n            if (string.IsNullOrEmpty(val))\n                val = string.Empty;\n\n            if (val.Contains(comparer))\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string len is greater than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(string val, int comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a string is greater than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(string val, int comparer, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (val.Length <= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string len is greater or equals than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(string val, int comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a string len is greater or equals than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(string val, int comparer, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (val.Length < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string len is lower than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(string val, int comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a string len is lower than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(string val, int comparer, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (val.Length >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n\n        /// <summary>\n        /// Requires a string len is lower or equals than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(string val, int comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a string len is lower or equals than\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"comparer\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(string val, int comparer, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (val.Length > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        \n        \n        /// <summary>\n        /// Requires a string len is between\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"min\"></param>\n        /// <param name=\"max\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(string val, int min, int max, string key, string message)\n        {\n            if (val == null)\n                return this;\n\n            if (string.IsNullOrEmpty(val) || string.IsNullOrWhiteSpace(val))\n                return this;\n\n            if (val.Length < min || val.Length > max)\n                AddNotification(key, message);\n\n            return this;\n        }\n    }\n}"
  },
  {
    "path": "Flunt/Validations/TimeSpanValidationContract.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        #region IsGreaterThan\n        /// <summary>\n        /// Requires a date is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(TimeSpan val, TimeSpan comparer, string key) =>\n            IsGreaterThan(val, comparer, key, FluntErrorMessages.IsGreaterThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a date is greater than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterThan(TimeSpan val, TimeSpan comparer, string key, string message)\n        {\n            if (val <= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsGreaterOrEqualsThan\n        /// <summary>\n        /// Requires a date is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(TimeSpan val, TimeSpan comparer, string key) =>\n            IsGreaterOrEqualsThan(val, comparer, key, FluntErrorMessages.IsGreaterOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a date is greater or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsGreaterOrEqualsThan(TimeSpan val, TimeSpan comparer, string key, string message)\n        {\n            if (val < comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsLowerThan\n        /// <summary>\n        /// Requires a date is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(TimeSpan val, TimeSpan comparer, string key) =>\n            IsLowerThan(val, comparer, key, FluntErrorMessages.IsLowerThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a date is lower than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerThan(TimeSpan val, TimeSpan comparer, string key, string message)\n        {\n            if (val >= comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsLowerOrEqualsThan\n        /// <summary>\n        /// Requires a date is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(TimeSpan val, TimeSpan comparer, string key) =>\n            IsLowerOrEqualsThan(val, comparer, key, FluntErrorMessages.IsLowerOrEqualsThanErrorMessage(key, comparer.ToString()));\n\n        /// <summary>\n        /// Requires a date is lower or equals than\n        /// </summary>\n        /// <param name=\"val\">val</param>\n        /// <param name=\"comparer\">comparer</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsLowerOrEqualsThan(TimeSpan val, TimeSpan comparer, string key, string message)\n        {\n            if (val > comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNull\n        /// <summary>\n        /// Requires a date is null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNull(TimeSpan? val, string key) =>\n            IsNull(val, key, FluntErrorMessages.IsNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a date is null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNull(TimeSpan? val, string key, string message)\n        {\n            if (val != null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotNull\n        /// <summary>\n        /// Requires a date is not null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(TimeSpan? val, string key) =>\n            IsNotNull(val, key, FluntErrorMessages.IsNotNullErrorMessage(key));\n\n        /// <summary>\n        /// Requires a date is not null\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotNull(TimeSpan? val, string key, string message)\n        {\n            if (val == null)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsBetween\n        /// <summary>\n        /// Requires a date is between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(TimeSpan val, TimeSpan start, TimeSpan end, string key) =>\n            IsBetween(val, start, end, key, FluntErrorMessages.IsBetweenErrorMessage(key, start.ToString(), end.ToString()));\n\n        /// <summary>\n        /// Requires a date is between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsBetween(TimeSpan val, TimeSpan start, TimeSpan end, string key, string message)\n        {\n            if ((val >= start && val <= end) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotBetween\n        /// <summary>\n        /// Requires a date is not between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(TimeSpan val, TimeSpan start, TimeSpan end, string key) =>\n            IsNotBetween(val, start, end, key, FluntErrorMessages.IsNotBetweenErrorMessage(key, start.ToString(), end.ToString()));\n\n        /// <summary>\n        /// Requires a date is not between\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"start\">start date</param>\n        /// <param name=\"end\">end date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotBetween(TimeSpan val, TimeSpan start, TimeSpan end, string key, string message)\n        {\n            if ((val >= start && val <= end) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMinValue\n        /// <summary>\n        /// Requires a date is min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(TimeSpan val, string key) =>\n            IsMinValue(val, key, FluntErrorMessages.IsMinValueErrorMessage(key, TimeSpan.MinValue.ToString()));\n\n\n        /// <summary>\n        /// Requires a date is min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsMinValue(TimeSpan val, string key, string message)\n        {\n            if (val != TimeSpan.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMinValue\n        /// <summary>\n        /// Requires a date is not min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(TimeSpan val, string key) =>\n            IsNotMinValue(val, key, FluntErrorMessages.IsNotMinValueErrorMessage(key, TimeSpan.MinValue.ToString()));\n\n\n        /// <summary>\n        /// Requires a date is not min value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMinValue(TimeSpan val, string key, string message)\n        {\n            if (val == TimeSpan.MinValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsMaxValue\n        /// <summary>\n        /// Requires a date is max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(TimeSpan val, string key) =>\n            IsMaxValue(val, key, FluntErrorMessages.IsMaxValueErrorMessage(key, TimeSpan.MaxValue.ToString()));\n\n\n        /// <summary>\n        /// Requires a date is max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsMaxValue(TimeSpan val, string key, string message)\n        {\n            if (val != TimeSpan.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region IsNotMaxValue\n        /// <summary>\n        /// Requires a date is not max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(TimeSpan val, string key) =>\n            IsNotMaxValue(val, key, FluntErrorMessages.IsNotMaxValueErrorMessage(key, TimeSpan.MaxValue.ToString()));\n\n\n        /// <summary>\n        /// Requires a date is not max value\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> IsNotMaxValue(TimeSpan val, string key, string message)\n        {\n            if (val == TimeSpan.MaxValue)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreEquals\n\n        /// <summary>\n        /// Require dates are equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(TimeSpan val, TimeSpan comparer, string key)\n            => AreEquals(val, comparer, key, FluntErrorMessages.AreEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Require dates are equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Customer error message</param>\n        /// <returns></returns>\n        public Contract<T> AreEquals(TimeSpan val, TimeSpan comparer, string key, string message)\n        {\n            if (val != comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region AreNotEquals\n        /// <summary>\n        /// Requires two dates are not equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(TimeSpan val, TimeSpan comparer, string key)\n            => AreNotEquals(val, comparer, key, FluntErrorMessages.AreNotEqualsErrorMessage(val.ToString(), comparer.ToString()));\n\n        /// <summary>\n        /// Requires two dates are not equals\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"comparer\">date</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> AreNotEquals(TimeSpan val, TimeSpan comparer, string key, string message)\n        {\n            if (val == comparer)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region Contains\n        /// <summary>\n        /// Requires a list contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> Contains(TimeSpan val, IEnumerable<TimeSpan> list, string key)\n            => Contains(val, list, key, FluntErrorMessages.ContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> Contains(TimeSpan val, IEnumerable<TimeSpan> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == false)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n\n        #region NotContains\n        /// <summary>\n        /// Requires a list not contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <returns></returns>\n        public Contract<T> NotContains(TimeSpan val, IEnumerable<TimeSpan> list, string key)\n            => NotContains(val, list, key, FluntErrorMessages.NotContainsErrorMessage(key, val.ToString()));\n\n        /// <summary>\n        /// Requires a list not contains a date\n        /// </summary>\n        /// <param name=\"val\">date</param>\n        /// <param name=\"list\">list of dates</param>\n        /// <param name=\"key\">Key or Property Name</param>\n        /// <param name=\"message\">Custom error message</param>\n        /// <returns></returns>\n        public Contract<T> NotContains(TimeSpan val, IEnumerable<TimeSpan> list, string key, string message)\n        {\n            if (list.Any(x => x == val) == true)\n                AddNotification(key, message);\n\n            return this;\n        }\n        #endregion\n    }\n}\n"
  },
  {
    "path": "Flunt/Validations/UrlValidationContract.cs",
    "content": "﻿using Flunt.Localization;\n\nnamespace Flunt.Validations\n{\n    public partial class Contract<T>\n    {\n        /// <summary>\n        /// Requires a string is an URL\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsUrl(string val, string key) =>\n            IsUrl(val, key, FluntErrorMessages.IsUrlErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is an URL\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsUrl(string val, string key, string message) =>\n            Matches(val, FluntRegexPatterns.UrlRegexPattern, key, message);\n\n        /// <summary>\n        /// Requires a string is an URL or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsUrlOrEmpty(string val, string key) =>\n            IsUrlOrEmpty(val, key, FluntErrorMessages.IsUrlOrEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is an URL or empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsUrlOrEmpty(string val, string key, string message)\n        {\n            return string.IsNullOrEmpty(val) ?\n                this :\n                Matches(val, FluntRegexPatterns.UrlRegexPattern, key, message);\n        }\n\n        /// <summary>\n        /// Requires a string is not an URL\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotUrl(string val, string key) =>\n            IsNotUrl(val, key, FluntErrorMessages.IsNotUrlErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is not an URL\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotUrl(string val, string key, string message) =>\n            NotMatches(val, FluntRegexPatterns.UrlRegexPattern, key, message);\n\n        /// <summary>\n        /// Requires a string is not an URL or is empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotUrlOrEmpty(string val, string key) =>\n            IsNotUrlOrEmpty(val, key, FluntErrorMessages.IsNotUrlOrEmptyErrorMessage(key));\n\n        /// <summary>\n        /// Requires a string is not an URL or is empty\n        /// </summary>\n        /// <param name=\"val\"></param>\n        /// <param name=\"key\"></param>\n        /// <param name=\"message\"></param>\n        /// <returns></returns>\n        public Contract<T> IsNotUrlOrEmpty(string val, string key, string message)\n        {\n            return string.IsNullOrEmpty(val) ?\n                this :\n                NotMatches(val, FluntRegexPatterns.UrlRegexPattern, key, message);\n        }\n    }\n}"
  },
  {
    "path": "Flunt.Samples/Entities/Contracts/CreateCustomerContract.cs",
    "content": "﻿using Flunt.Validations;\n\nnamespace Flunt.Samples.Entities.Contracts\n{\n    public class CreateCustomerContract : Contract<Customer>\n    {\n        public CreateCustomerContract(Customer customer)\n        {\n            Requires()\n                .IsNotNullOrEmpty(customer.Name, \"Name\", \"Custom error message\");\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Entities/Contracts/UpdateCustomerBirthDateContract.cs",
    "content": "﻿using System;\nusing Flunt.Validations;\n\nnamespace Flunt.Samples.Entities.Contracts\n{\n    public class UpdateCustomerBirthDateContract : Contract<Customer>\n    {\n        public UpdateCustomerBirthDateContract(Customer customer)\n        {\n            Requires()\n                .IsLowerThan(customer.BirthDate, DateTime.Now.AddYears(-18), \"BirthDate\");\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Entities/Customer.cs",
    "content": "﻿using System;\nusing Flunt.Samples.Entities.Contracts;\nusing Flunt.Samples.ValueObjects;\n\nnamespace Flunt.Samples.Entities\n{\n    public class Customer : Entity\n    {\n        public Customer(string name, Email email)\n        {\n            Name = name;\n            Email = email;\n\n            AddNotifications(new CreateCustomerContract(this));\n        }\n\n        public string Name { get; private set; }\n        public Email Email { get; private set; }\n        public DateTime BirthDate { get; private set; }\n\n        public void UpdateBirthDate(DateTime birthDate)\n        {\n            BirthDate = birthDate;\n            AddNotifications(new UpdateCustomerBirthDateContract(this));\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Entities/Entity.cs",
    "content": "﻿using System;\nusing Flunt.Notifications;\n\nnamespace Flunt.Samples.Entities\n{\n    public abstract class Entity : Notifiable<Notification>\n    {\n        protected Entity()\n        {\n            Id = Guid.NewGuid();\n        }\n\n        public Guid Id { get; private set; }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Entities/Order.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Flunt.Samples.Entities\n{\n    class Order\n    {\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Entities/OrderLine.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\n\nnamespace Flunt.Samples.Entities\n{\n    class OrderLine\n    {\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Flunt.Samples.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <OutputType>Exe</OutputType>\n    <TargetFramework>net5.0</TargetFramework>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Flunt\\Flunt.csproj\" />\n  </ItemGroup>\n\n  <ItemGroup>\n    <Folder Include=\"Handlers\\Responses\\\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "Flunt.Samples/Handlers/CustomerHandler.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Flunt.Notifications;\nusing Flunt.Samples.Entities;\nusing Flunt.Samples.Handlers.Requests;\nusing Flunt.Samples.ValueObjects;\n\nnamespace Flunt.Samples.Handlers\n{\n    public class CustomerHandler : Notifiable<Notification>\n    {\n        public bool Handle(CreateCustomerRequest request)\n        {\n            if (request.IsValid == false)\n            {\n                AddNotifications(request.Notifications);\n                return false;\n            }\n\n            var email = new Email(request.Email);\n            var customer = new Customer(request.Name, email);\n\n            AddNotifications(email.Notifications);\n            AddNotifications(customer.Notifications);\n\n            return IsValid;\n\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Handlers/Requests/Contracts/CreateCustomerRequestContract.cs",
    "content": "﻿using Flunt.Validations;\n\nnamespace Flunt.Samples.Handlers.Requests.Contracts\n{\n    public class CreateCustomerRequestContract : Contract<CreateCustomerRequest>\n    {\n        public CreateCustomerRequestContract(CreateCustomerRequest request)\n        {\n            Requires()\n                .IsNotNullOrEmpty(request.Name, \"Name\", \"Custom error message\")\n                .IsEmail(request.Email, \"Email\");\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Handlers/Requests/CreateCustomerRequest.cs",
    "content": "﻿using Flunt.Notifications;\nusing Flunt.Samples.Handlers.Requests.Contracts;\n\nnamespace Flunt.Samples.Handlers.Requests\n{\n    public class CreateCustomerRequest : Notifiable<Notification>\n    {\n        public CreateCustomerRequest(string name, string email)\n        {\n            Name = name;\n            Email = email;\n\n            AddNotifications(new CreateCustomerRequestContract(this));\n        }\n\n        public string Name { get; private set; }\n        public string Email { get; private set; }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/Program.cs",
    "content": "﻿using System;\nusing Flunt.Localization;\nusing Flunt.Samples.Handlers;\nusing Flunt.Samples.Handlers.Requests;\n\nnamespace Flunt.Samples\n{\n    class Program\n    {\n        static void Main(string[] args)\n        {\n            FluntErrorMessages.IsEmailLocalizationErrorMessage = \"deve ser um E-mail\";\n\n            var request = new CreateCustomerRequest(\"\", \"\");\n            var handler = new CustomerHandler();\n            var response = handler.Handle(request);\n\n            if (response == false)\n            {\n                foreach (var item in handler.Notifications)\n                {\n                    Console.WriteLine($\"{item.Key} - {item.Message}\");\n                }\n            }\n\n            Console.ReadKey();\n\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/ValueObjects/Contracts/CreateEmailContract.cs",
    "content": "﻿using Flunt.Validations;\n\nnamespace Flunt.Samples.ValueObjects.Contracts\n{\n    public class CreateEmailContract : Contract<Email>\n    {\n        public CreateEmailContract(Email email)\n        {\n            Requires()\n                .IsEmail(email.Address, \"Email\");\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Samples/ValueObjects/Email.cs",
    "content": "﻿using Flunt.Notifications;\nusing Flunt.Samples.ValueObjects.Contracts;\n\nnamespace Flunt.Samples.ValueObjects\n{\n    public class Email : Notifiable<Notification>\n    {\n        public Email(string address)\n        {\n            Address = address;\n            AddNotifications(new CreateEmailContract(this));\n        }\n\n        public string Address { get; private set; }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/BoolValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class BoolValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Bool Validation\")]\n        [TestMethod(\"Requires that a bool is true\")]\n        public void RequiresBoolIsTrue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsTrue(_entity.BoolTrueProperty, \"Bool\")\n                .IsTrue(_entity.BoolTrueProperty, \"Bool\", \"Custom message here\")\n                .IsTrue(_entity.BoolFalseProperty, \"Bool\")\n                .IsTrue(_entity.BoolFalseProperty, \"Bool\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Bool Validation\")]\n        [TestMethod(\"Requires that a bool is false\")]\n        public void RequiresBoolIsFalse()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsFalse(_entity.BoolTrueProperty, \"Bool\")\n                .IsFalse(_entity.BoolTrueProperty, \"Bool\", \"Custom message here\")\n                .IsFalse(_entity.BoolFalseProperty, \"Bool\")\n                .IsFalse(_entity.BoolFalseProperty, \"Bool\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Bool Validation\")]\n        [TestMethod(\"Requires that a bool is not null\")]\n        public void RequiresBoolIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.BoolTrueProperty, \"Bool\")\n                .IsNotNull(_entity.BoolTrueProperty, \"Bool\", \"Custom message here\")\n                .IsNotNull(_entity.BoolNullProperty, \"Bool\")\n                .IsNotNull(_entity.BoolNullProperty, \"Bool\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Bool Validation\")]\n        [TestMethod(\"Requires that a bool is null\")]\n        public void RequiresBoolIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.BoolTrueProperty, \"Bool\")\n                .IsNull(_entity.BoolTrueProperty, \"Bool\", \"Custom message here\")\n                .IsNull(_entity.BoolNullProperty, \"Bool\")\n                .IsNull(_entity.BoolNullProperty, \"Bool\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/CreditCardValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class CreditCardValidationTests\n    {\n        [TestCategory(\"Credit Card Validation\")]\n        [TestMethod(\"Requires a string is a credit card\")]\n        public void IsCreditCard()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                // Invalid\n                .IsCreditCard(\"0123-4567-8910-1112\", \"Credit Card\")\n                .IsCreditCard(\"0123-4567-8910-1112\", \"Credit Card\", \"Custom error message\")\n\n                // AMEX\n                .IsCreditCard(\"373433821922186\", \"Credit Card\")\n                .IsCreditCard(\"3427-6024-6436-857\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"346632758191947\", \"Credit Card\")\n                .IsCreditCard(\"4485 2186 4519 4493\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"375194347138826\", \"Credit Card\")\n                .IsCreditCard(\"346935889946281\", \"Credit Card\", \"Custom error message\")\n\n                // MASTER\n                .IsCreditCard(\"5568520982367328\", \"Credit Card\")\n                .IsCreditCard(\"5431-3877-6236-1722\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"5169078428154498\", \"Credit Card\")\n                .IsCreditCard(\"5448 9922 6407 5729\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"5263491699272904\", \"Credit Card\")\n\n                // VISA\n                .IsCreditCard(\"4532988359995672\", \"Credit Card\")\n                .IsCreditCard(\"4501-2496-9117-8544\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"4716369734700038\", \"Credit Card\")\n                .IsCreditCard(\"4024 0071 2090 7083\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"4916412584685087\", \"Credit Card\")\n\n                // DISCOVER\n                .IsCreditCard(\"6011825815766898\", \"Credit Card\")\n                .IsCreditCard(\"6011-8178-9685-9379\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"6011926127588515\", \"Credit Card\")\n                .IsCreditCard(\"6011 1719 2817 3668\", \"Credit Card\", \"Custom error message\")\n                .IsCreditCard(\"601 11 4054-68 367 33\", \"Credit Card\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/CustomNotificationsTests.cs",
    "content": "using System;\nusing System.Collections.Generic;\nusing Flunt.Notifications;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class CustomNotificationsTests\n    {\n        private readonly Customer _customer;\n\n        public CustomNotificationsTests()\n        {\n            _customer = new Customer();\n        }\n\n        [TestCategory(\"Custom Notification\")]\n        [TestMethod(\"Should not register a customer without a name\")]\n        public void ShouldNotRegisterACustomerWithoutAName()\n        {\n            _customer.Name = string.Empty;\n            _customer.Save();\n\n            Assert.AreEqual(_customer.IsValid, false);\n            Assert.AreEqual(_customer.Notifications.Count, 1);\n        }\n\n        [TestCategory(\"Custom Notification\")]\n        [TestMethod(\"Should not update a customer without an email\")]\n        public void ShouldNotUpdateACustomerWithoutAnEmail()\n        {\n            _customer.Name = \"Andr Baltieri\";\n            _customer.Email = string.Empty;\n            _customer.Update();\n\n            Assert.AreEqual(_customer.IsValid, false);\n            Assert.AreEqual(_customer.Notifications.Count, 1);\n        }\n\n        [TestCategory(\"Custom Notification\")]\n        [TestMethod(\"Should not update a customer with test email\")]\n        public void ShouldNotUpdateCustomersWithTestEmails()\n        {\n            _customer.Name = \"Andr Baltieri\";\n            _customer.Email = \"teste@teste.com\";\n            _customer.Update();\n\n            Assert.AreEqual(_customer.IsValid, false);\n            Assert.AreEqual(_customer.Notifications.Count, 1);\n        }\n    }\n\n    #region #1. Create a custom notifiable class\n    public class CustomNotifiable : Notifiable<CustomNotification>, INotifiable\n    {\n        public void AddNotifications(IEnumerable<Notification> notifications)\n        {\n            foreach (var item in notifications)\n            {\n                var notification = new CustomNotification(item.Key, item.Message, DateTime.Now);\n                AddNotification(notification);\n            }\n        }\n    }\n    #endregion\n\n    #region #2. Create your custom notification\n    public class CustomNotification : Notification\n    {\n        public CustomNotification(string key, string message)\n        {\n            Key = key;\n            Message = message;\n            Date = DateTime.Now;\n        }\n\n        public CustomNotification(string key, string message, DateTime date)\n        {\n            Key = key;\n            Message = message;\n            Date = date;\n        }\n\n        // Your notifications now have a date time\n        public DateTime Date { get; set; }\n    }\n    #endregion\n\n    #region #3. Prepare your class/contract\n    public class Customer : CustomNotifiable\n    {\n        public string Name { get; set; }\n        public string Email { get; set; }\n\n        public void Save()\n        {\n            var contract = new CreateCustomerSpecification(this);\n            AddNotifications(contract.Notifications);\n        }\n\n        public void Update()\n        {\n            var contract = new UpdateCustomerSpecification(this);\n            if (Email == \"teste@teste.com\")\n                AddNotification(new CustomNotification(\"Email\", \"Invalid email address\"));\n\n            AddNotifications(contract.Notifications);\n        }\n    }\n\n    public class CreateCustomerSpecification : Contract<Customer>\n    {\n        public CreateCustomerSpecification(Customer customer)\n        {\n            Requires()\n                .IsNotNullOrEmpty(customer.Name, \"FirstName\", \"First Name should have at least 3 chars\");\n        }\n    }\n\n    public class UpdateCustomerSpecification : Contract<Customer>\n    {\n        public UpdateCustomerSpecification(Customer customer)\n        {\n            Requires()\n                .IsNotNullOrEmpty(customer.Name, \"FirstName\", \"Custom error message\")\n                .IsNotNullOrEmpty(customer.Email, \"Email\", \"Custom error message\");\n        }\n    }\n    #endregion\n\n}\n"
  },
  {
    "path": "Flunt.Tests/DateTimeValidationTests.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing System.Linq;\nusing System.Text;\nusing System.Threading.Tasks;\nusing Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class DateTimeValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is greater than\")]\n        public void RequiresDateIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\")\n                .IsGreaterThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\", \"Custom message here\")\n                .IsGreaterThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\")\n                .IsGreaterThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is greater or equals than\")]\n        public void RequiresDateIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterOrEqualsThanNow, \"DateTime\")\n                .IsGreaterOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterOrEqualsThanNow, \"DateTime\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\")\n                .IsGreaterOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\")\n                .IsGreaterOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is lower than\")]\n        public void RequiresDateIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\")\n                .IsLowerThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\", \"Custom message here\")\n                .IsLowerThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\")\n                .IsLowerThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is lower or equals than\")]\n        public void RequiresDateIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerOrEqualsThanNow, \"DateTime\")\n                .IsLowerOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerOrEqualsThanNow, \"DateTime\", \"Custom message here\")\n                .IsLowerOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\")\n                .IsLowerOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeLowerThanNow, \"DateTime\", \"Custom message here\")\n                .IsLowerOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\")\n                .IsLowerOrEqualsThan(SampleEntity.DateTimeSnapshot, _entity.DateTimeGreaterThanNow, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is not null\")]\n        public void RequiresDateIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(SampleEntity.DateTimeSnapshot, \"DateTime\")\n                .IsNotNull(SampleEntity.DateTimeSnapshot, \"DateTime\", \"Custom message here\")\n                .IsNotNull(_entity.DateTimeNull, \"DateTime\")\n                .IsNotNull(_entity.DateTimeNull, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is null\")]\n        public void RequiresDateIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(SampleEntity.DateTimeSnapshot, \"DateTime\")\n                .IsNull(SampleEntity.DateTimeSnapshot, \"DateTime\", \"Custom message here\")\n                .IsNull(_entity.DateTimeNull, \"DateTime\")\n                .IsNull(_entity.DateTimeNull, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is between\")]\n        public void RequiresDateIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.DateTimeBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n                .IsBetween(_entity.DateTimeBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\", \"Custom message here\")\n\n                // DateTime = StartDate will be consider between\n                .IsBetween(_entity.DateTimeStartDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n\n                // DateTime = EndDate will be consider between\n                .IsBetween(_entity.DateTimeEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n\n                .IsBetween(_entity.DateTimeNotBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n                .IsBetween(_entity.DateTimeNotBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is not between\")]\n        public void RequiresDateIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.DateTimeNotBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n                .IsNotBetween(_entity.DateTimeNotBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\", \"Custom message here\")\n\n                // DateTime = StartDate will be consider not between\n                .IsBetween(_entity.DateTimeStartDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n\n                // DateTime = EndDate will be consider not between\n                .IsBetween(_entity.DateTimeEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n\n                .IsNotBetween(_entity.DateTimeBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n                .IsNotBetween(_entity.DateTimeBetweenStartAndEndDate, _entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is min value\")]\n        public void RequiresDateHaveMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(DateTime.MaxValue, \"DateTime\")\n                .IsMinValue(DateTime.MaxValue, \"DateTime\", \"Custom message here\")\n                .IsMinValue(DateTime.MinValue, \"DateTime\")\n                .IsMinValue(DateTime.MinValue, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is not min value\")]\n        public void RequiresDateDoNotHaveMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(DateTime.MaxValue, \"DateTime\")\n                .IsNotMinValue(DateTime.MaxValue, \"DateTime\", \"Custom message here\")\n                .IsNotMinValue(DateTime.MinValue, \"DateTime\")\n                .IsNotMinValue(DateTime.MinValue, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is max value\")]\n        public void RequiresDateHaveMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(DateTime.MaxValue, \"DateTime\")\n                .IsMaxValue(DateTime.MaxValue, \"DateTime\", \"Custom message here\")\n                .IsMaxValue(DateTime.MinValue, \"DateTime\")\n                .IsMaxValue(DateTime.MinValue, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a date is not max value\")]\n        public void RequiresDateDoNotHaveMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(DateTime.MaxValue, \"DateTime\")\n                .IsNotMaxValue(DateTime.MaxValue, \"DateTime\", \"Custom message here\")\n                .IsNotMaxValue(DateTime.MinValue, \"DateTime\")\n                .IsNotMaxValue(DateTime.MinValue, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires two dates are equals\")]\n        public void RequiresDatesAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals(_entity.DateTimeStartDate, _entity.DateTimeStartDate, \"DateTime\")\n                .AreEquals(_entity.DateTimeStartDate, _entity.DateTimeStartDate, \"DateTime\", \"Custom message here\")\n                .AreEquals(_entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n                .AreEquals(_entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires two dates are not equals\")]\n        public void RequiresDatesAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals(_entity.DateTimeStartDate, _entity.DateTimeStartDate, \"DateTime\")\n                .AreNotEquals(_entity.DateTimeStartDate, _entity.DateTimeStartDate, \"DateTime\", \"Custom message here\")\n                .AreNotEquals(_entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\")\n                .AreNotEquals(_entity.DateTimeStartDate, _entity.DateTimeEndDate, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a list contains a date\")]\n        public void RequiresListContainsDate()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains(SampleEntity.DateTimeSnapshot, _entity.DateTimeList, \"DateTime\")\n                .Contains(SampleEntity.DateTimeSnapshot, _entity.DateTimeList, \"DateTime\", \"Custom message here\")\n                .Contains(_entity.DateTimeEndDate, _entity.DateTimeList, \"DateTime\")\n                .Contains(_entity.DateTimeEndDate, _entity.DateTimeList, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"DateTime Validation\")]\n        [TestMethod(\"Requires a list not contains a date\")]\n        public void RequiresListNotContainsDate()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains(SampleEntity.DateTimeSnapshot, _entity.DateTimeList, \"DateTime\")\n                .NotContains(SampleEntity.DateTimeSnapshot, _entity.DateTimeList, \"DateTime\", \"Custom message here\")\n                .NotContains(_entity.DateTimeEndDate, _entity.DateTimeList, \"DateTime\")\n                .NotContains(_entity.DateTimeEndDate, _entity.DateTimeList, \"DateTime\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/DecimalValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class DecimalValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is greater than\")]\n        public void RequiresDecimalIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan((decimal)0, (int)10, \"Decimal\")\n                .IsGreaterThan((decimal)0, (int)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)10, (int)10, \"Decimal\")\n                .IsGreaterThan((decimal)10, (int)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)20, (int)10, \"Decimal\")\n                .IsGreaterThan((decimal)20, (int)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterThan((decimal)0, (float)10, \"Decimal\")\n                .IsGreaterThan((decimal)0, (float)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)10, (float)10, \"Decimal\")\n                .IsGreaterThan((decimal)10, (float)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)20, (float)10, \"Decimal\")\n                .IsGreaterThan((decimal)20, (float)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterThan((decimal)0, (double)10, \"Decimal\")\n                .IsGreaterThan((decimal)0, (double)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)10, (double)10, \"Decimal\")\n                .IsGreaterThan((decimal)10, (double)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)20, (double)10, \"Decimal\")\n                .IsGreaterThan((decimal)20, (double)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterThan((decimal)0, (long)10, \"Decimal\")\n                .IsGreaterThan((decimal)0, (long)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)10, (long)10, \"Decimal\")\n                .IsGreaterThan((decimal)10, (long)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)20, (long)10, \"Decimal\")\n                .IsGreaterThan((decimal)20, (long)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterThan((decimal)0, (decimal)10, \"Decimal\")\n                .IsGreaterThan((decimal)0, (decimal)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)10, (decimal)10, \"Decimal\")\n                .IsGreaterThan((decimal)10, (decimal)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterThan((decimal)20, (decimal)10, \"Decimal\")\n                .IsGreaterThan((decimal)20, (decimal)10, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is greater or equals than\")]\n        public void RequiresDecimalIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan((decimal)0, (int)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)0, (int)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)10, (int)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)10, (int)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)20, (int)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)20, (int)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((decimal)0, (float)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)0, (float)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)10, (float)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)10, (float)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)20, (float)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)20, (float)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((decimal)0, (double)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)0, (double)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)10, (double)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)10, (double)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)20, (double)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)20, (double)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((decimal)0, (long)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)0, (long)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)10, (long)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)10, (long)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)20, (long)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)20, (long)10, \"Decimal\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((decimal)0, (decimal)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)0, (decimal)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)10, (decimal)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)10, (decimal)10, \"Decimal\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((decimal)20, (decimal)10, \"Decimal\")\n                .IsGreaterOrEqualsThan((decimal)20, (decimal)10, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is lower than\")]\n        public void RequiresDecimalIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan((decimal)0, (int)0, \"Decimal\")\n                .IsLowerThan((decimal)0, (int)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)-5, (int)0, \"Decimal\")\n                .IsLowerThan((decimal)-5, (int)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)5, (int)0, \"Decimal\")\n                .IsLowerThan((decimal)5, (int)0, \"Decimal\", \"Custom message here\")\n\n                .IsLowerThan((decimal)0, (float)0, \"Decimal\")\n                .IsLowerThan((decimal)0, (float)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)-5, (float)0, \"Decimal\")\n                .IsLowerThan((decimal)-5, (float)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)5, (float)0, \"Decimal\")\n                .IsLowerThan((decimal)5, (float)0, \"Decimal\", \"Custom message here\")\n\n                .IsLowerThan((decimal)0, (double)0, \"Decimal\")\n                .IsLowerThan((decimal)0, (double)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)-5, (double)0, \"Decimal\")\n                .IsLowerThan((decimal)-5, (double)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)5, (double)0, \"Decimal\")\n                .IsLowerThan((decimal)5, (double)0, \"Decimal\", \"Custom message here\")\n\n                .IsLowerThan((decimal)0, (long)0, \"Decimal\")\n                .IsLowerThan((decimal)0, (long)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)-5, (long)0, \"Decimal\")\n                .IsLowerThan((decimal)-5, (long)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)5, (long)0, \"Decimal\")\n                .IsLowerThan((decimal)5, (long)0, \"Decimal\", \"Custom message here\")\n\n                .IsLowerThan((decimal)0, (decimal)0, \"Decimal\")\n                .IsLowerThan((decimal)0, (decimal)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)-5, (decimal)0, \"Decimal\")\n                .IsLowerThan((decimal)-5, (decimal)0, \"Decimal\", \"Custom message here\")\n                .IsLowerThan((decimal)5, (decimal)0, \"Decimal\")\n                .IsLowerThan((decimal)5, (decimal)0, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is lower or equals than\")]\n        public void RequiresDecimalIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan((decimal)0, (int)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)0, (int)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)10, (int)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)10, (int)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)20, (int)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)20, (int)10, \"Decimal\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((decimal)0, (float)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)0, (float)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)10, (float)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)10, (float)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)20, (float)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)20, (float)10, \"Decimal\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((decimal)0, (double)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)0, (double)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)10, (double)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)10, (double)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)20, (double)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)20, (double)10, \"Decimal\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((decimal)0, (long)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)0, (long)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)10, (long)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)10, (long)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)20, (long)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)20, (long)10, \"Decimal\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((decimal)0, (decimal)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)0, (decimal)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)10, (decimal)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)10, (decimal)10, \"Decimal\", \"Custom message here\")\n                .IsLowerOrEqualsThan((decimal)20, (decimal)10, \"Decimal\")\n                .IsLowerOrEqualsThan((decimal)20, (decimal)10, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal has its min value\")]\n        public void RequireDecimalHasItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(decimal.MaxValue, \"Decimal\")\n                .IsMinValue(decimal.MaxValue, \"Decimal\", \"Custom message here\")\n                .IsMinValue(decimal.MinValue, \"Decimal\")\n                .IsMinValue(decimal.MinValue, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal has not its min value\")]\n        public void RequireDecimalHasNotItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(decimal.MaxValue, \"Decimal\")\n                .IsNotMinValue(decimal.MaxValue, \"Decimal\", \"Custom message here\")\n                .IsNotMinValue(decimal.MinValue, \"Decimal\")\n                .IsNotMinValue(decimal.MinValue, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal has its max value\")]\n        public void RequireDecimalHasItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(decimal.MaxValue, \"Decimal\")\n                .IsMaxValue(decimal.MaxValue, \"Decimal\", \"Custom message here\")\n                .IsMaxValue(decimal.MinValue, \"Decimal\")\n                .IsMaxValue(decimal.MinValue, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal has not its max value\")]\n        public void RequireDecimalHasNotItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(decimal.MaxValue, \"Decimal\")\n                .IsNotMaxValue(decimal.MaxValue, \"Decimal\", \"Custom message here\")\n                .IsNotMaxValue(decimal.MinValue, \"Decimal\")\n                .IsNotMaxValue(decimal.MinValue, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires two decimals are equals\")]\n        public void RequireTwoDecimalsAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals((decimal)0, (int)0, \"Decimal\")\n                .AreEquals((decimal)0, (int)0, \"Decimal\", \"Custom message here\")\n                .AreEquals((decimal)0, (int)10, \"Decimal\")\n                .AreEquals((decimal)0, (int)10, \"Decimal\", \"Custom message here\")\n\n                .AreEquals((decimal)0, (float)0, \"Decimal\")\n                .AreEquals((decimal)0, (float)0, \"Decimal\", \"Custom message here\")\n                .AreEquals((decimal)0, (float)10, \"Decimal\")\n                .AreEquals((decimal)0, (float)10, \"Decimal\", \"Custom message here\")\n\n                .AreEquals((decimal)0, (double)0, \"Decimal\")\n                .AreEquals((decimal)0, (double)0, \"Decimal\", \"Custom message here\")\n                .AreEquals((decimal)0, (double)10, \"Decimal\")\n                .AreEquals((decimal)0, (double)10, \"Decimal\", \"Custom message here\")\n\n                .AreEquals((decimal)0, (long)0, \"Decimal\")\n                .AreEquals((decimal)0, (long)0, \"Decimal\", \"Custom message here\")\n                .AreEquals((decimal)0, (long)10, \"Decimal\")\n                .AreEquals((decimal)0, (long)10, \"Decimal\", \"Custom message here\")\n\n                .AreEquals((decimal)0, (decimal)0, \"Decimal\")\n                .AreEquals((decimal)0, (decimal)0, \"Decimal\", \"Custom message here\")\n                .AreEquals((decimal)0, (decimal)10, \"Decimal\")\n                .AreEquals((decimal)0, (decimal)10, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires two decimals are not equals\")]\n        public void RequireTwoDecimalsAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals((decimal)0, (int)0, \"Decimal\")\n                .AreNotEquals((decimal)0, (int)0, \"Decimal\", \"Custom message here\")\n                .AreNotEquals((decimal)0, (int)10, \"Decimal\")\n                .AreNotEquals((decimal)0, (int)10, \"Decimal\", \"Custom message here\")\n\n                .AreNotEquals((decimal)0, (float)0, \"Decimal\")\n                .AreNotEquals((decimal)0, (float)0, \"Decimal\", \"Custom message here\")\n                .AreNotEquals((decimal)0, (float)10, \"Decimal\")\n                .AreNotEquals((decimal)0, (float)10, \"Decimal\", \"Custom message here\")\n\n                .AreNotEquals((decimal)0, (double)0, \"Decimal\")\n                .AreNotEquals((decimal)0, (double)0, \"Decimal\", \"Custom message here\")\n                .AreNotEquals((decimal)0, (double)10, \"Decimal\")\n                .AreNotEquals((decimal)0, (double)10, \"Decimal\", \"Custom message here\")\n\n                .AreNotEquals((decimal)0, (long)0, \"Decimal\")\n                .AreNotEquals((decimal)0, (long)0, \"Decimal\", \"Custom message here\")\n                .AreNotEquals((decimal)0, (long)10, \"Decimal\")\n                .AreNotEquals((decimal)0, (long)10, \"Decimal\", \"Custom message here\")\n\n                .AreNotEquals((decimal)0, (decimal)0, \"Decimal\")\n                .AreNotEquals((decimal)0, (decimal)0, \"Decimal\", \"Custom message here\")\n                .AreNotEquals((decimal)0, (decimal)10, \"Decimal\")\n                .AreNotEquals((decimal)0, (decimal)10, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is null\")]\n        public void RequiresDecimalIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.DecimalNull, \"Decimal\")\n                .IsNull(_entity.DecimalNull, \"Decimal\", \"Custom message here\")\n                .IsNull(_entity.DecimalStart, \"Decimal\")\n                .IsNull(_entity.DecimalStart, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is not null\")]\n        public void RequiresDecimalIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.DecimalNull, \"Decimal\")\n                .IsNotNull(_entity.DecimalNull, \"Decimal\", \"Custom message here\")\n                .IsNotNull(_entity.DecimalStart, \"Decimal\")\n                .IsNotNull(_entity.DecimalStart, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is between\")]\n        public void RequiresDecimalIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalStart, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalStart, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalStart, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalStart, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalStart, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalStart, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalStart, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalStart, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalStart, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalStart, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsBetween(_entity.DecimalNotBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a decimal is not between\")]\n        public void RequiresDecimalIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalStart, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalStart, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (int)_entity.DecimalStart, (int)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalStart, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalStart, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (double)_entity.DecimalStart, (double)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalStart, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalStart, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (float)_entity.DecimalStart, (float)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalStart, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalStart, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, (long)_entity.DecimalStart, (long)_entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalStart, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalStart, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\")\n                .IsNotBetween(_entity.DecimalNotBetweenStartAndEnd, _entity.DecimalStart, _entity.DecimalEnd, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 30);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a list contains a decimal\")]\n        public void RequiresListContainsDecimal()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains((decimal)1, _entity.DecimalList, \"Decimal\")\n                .Contains((decimal)1, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .Contains((decimal)3, _entity.DecimalList, \"Decimal\")\n                .Contains((decimal)3, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .Contains((decimal)5, _entity.DecimalList, \"Decimal\")\n                .Contains((decimal)5, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .Contains((decimal)7, _entity.DecimalList, \"Decimal\")\n                .Contains((decimal)7, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .Contains((decimal)9, _entity.DecimalList, \"Decimal\")\n                .Contains((decimal)9, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .Contains((decimal)11, _entity.DecimalList, \"Decimal\")\n                .Contains((decimal)11, _entity.DecimalList, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Decimal Validation\")]\n        [TestMethod(\"Requires a list does not contains a decimal\")]\n        public void RequiresListNotContainsDecimal()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains((decimal)1, _entity.DecimalList, \"Decimal\")\n                .NotContains((decimal)1, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .NotContains((decimal)3, _entity.DecimalList, \"Decimal\")\n                .NotContains((decimal)3, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .NotContains((decimal)5, _entity.DecimalList, \"Decimal\")\n                .NotContains((decimal)5, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .NotContains((decimal)7, _entity.DecimalList, \"Decimal\")\n                .NotContains((decimal)7, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .NotContains((decimal)9, _entity.DecimalList, \"Decimal\")\n                .NotContains((decimal)9, _entity.DecimalList, \"Decimal\", \"Custom message here\")\n                .NotContains((decimal)11, _entity.DecimalList, \"Decimal\")\n                .NotContains((decimal)11, _entity.DecimalList, \"Decimal\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/DocumentValidationTests.cs",
    "content": "﻿using Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class DocumentValidationTests\n    {\n        [TestCategory(\"Document Validation\")]\n        [TestMethod(\"Requires a string is a passport number\")]\n        public void IsPassport()\n        {\n            var contract = new Contract<string>()\n                .Requires()\n\n                // INVALID\n                .IsPassport(null, \"TEST 01\")\n                .IsPassport(null, \"TEST 02\", \"Custom error message\")\n\n                // INVALID\n                .IsPassport(string.Empty, \"TEST 03\")\n                .IsPassport(string.Empty, \"TEST 04\", \"Custom error message\")\n\n                // INVALID\n                .IsPassport(\" \", \"TEST 05\")\n                .IsPassport(\" \", \"TEST 06\", \"Custom error message\")\n\n                // VALID\n                .IsPassport(\"ABCDE\", \"TEST 07\")\n                .IsPassport(\"ABCDE\", \"TEST 08\", \"Custom error message\")\n\n                // VALID\n                .IsPassport(\"1340\", \"TEST 09\")\n                .IsPassport(\"1340\", \"TEST 10\", \"Custom error message\")\n\n                // INVALID\n                .IsPassport(\"587.461.400-18\", \"TEST 11\")\n                .IsPassport(\"587.461.400-18\", \"TEST 12\", \"Custom error message\")\n\n                // INVALID\n                .IsPassport(\"774 451 480 78\", \"TEST 13\")\n                .IsPassport(\"774 451 480 78\", \"TEST 14\", \"Custom error message\")\n\n                // VALID\n                .IsPassport(\"48042595034\", \"TEST 15\")\n                .IsPassport(\"48042595034\", \"TEST 16\", \"Custom error message\")\n\n                // VALID\n                .IsPassport(\"48042595035\", \"TEST 15\")\n                .IsPassport(\"48042595035\", \"TEST 16\", \"Custom error message\")\n\n                // VALID\n                .IsPassport(\"35245678901\", \"TEST 15\")\n                .IsPassport(\"35245678901\", \"TEST 16\", \"Custom error message\")\n\n                // INVALID\n                .IsPassport(\"3524567890135245678901\", \"TEST 15\")\n                .IsPassport(\"3524567890135245678901\", \"TEST 16\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 12);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/DoubleValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class DoubleValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is greater than\")]\n        public void RequiresDoubleIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan((double)0, (int)10, \"Double\")\n                .IsGreaterThan((double)0, (int)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)10, (int)10, \"Double\")\n                .IsGreaterThan((double)10, (int)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)20, (int)10, \"Double\")\n                .IsGreaterThan((double)20, (int)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterThan((double)0, (float)10, \"Double\")\n                .IsGreaterThan((double)0, (float)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)10, (float)10, \"Double\")\n                .IsGreaterThan((double)10, (float)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)20, (float)10, \"Double\")\n                .IsGreaterThan((double)20, (float)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterThan((double)0, (double)10, \"Double\")\n                .IsGreaterThan((double)0, (double)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)10, (double)10, \"Double\")\n                .IsGreaterThan((double)10, (double)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)20, (double)10, \"Double\")\n                .IsGreaterThan((double)20, (double)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterThan((double)0, (long)10, \"Double\")\n                .IsGreaterThan((double)0, (long)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)10, (long)10, \"Double\")\n                .IsGreaterThan((double)10, (long)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)20, (long)10, \"Double\")\n                .IsGreaterThan((double)20, (long)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterThan((double)0, (decimal)10, \"Double\")\n                .IsGreaterThan((double)0, (decimal)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)10, (decimal)10, \"Double\")\n                .IsGreaterThan((double)10, (decimal)10, \"Double\", \"Custom message here\")\n                .IsGreaterThan((double)20, (decimal)10, \"Double\")\n                .IsGreaterThan((double)20, (decimal)10, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is greater or equals than\")]\n        public void RequiresDoubleIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan((double)0, (int)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)0, (int)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)10, (int)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)10, (int)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)20, (int)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)20, (int)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((double)0, (float)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)0, (float)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)10, (float)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)10, (float)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)20, (float)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)20, (float)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((double)0, (double)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)0, (double)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)10, (double)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)10, (double)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)20, (double)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)20, (double)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((double)0, (long)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)0, (long)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)10, (long)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)10, (long)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)20, (long)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)20, (long)10, \"Double\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((double)0, (decimal)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)0, (decimal)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)10, (decimal)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)10, (decimal)10, \"Double\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((double)20, (decimal)10, \"Double\")\n                .IsGreaterOrEqualsThan((double)20, (decimal)10, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is lower than\")]\n        public void RequiresDoubleIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan((double)0, (int)0, \"Double\")\n                .IsLowerThan((double)0, (int)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)-5, (int)0, \"Double\")\n                .IsLowerThan((double)-5, (int)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)5, (int)0, \"Double\")\n                .IsLowerThan((double)5, (int)0, \"Double\", \"Custom message here\")\n\n                .IsLowerThan((double)0, (float)0, \"Double\")\n                .IsLowerThan((double)0, (float)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)-5, (float)0, \"Double\")\n                .IsLowerThan((double)-5, (float)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)5, (float)0, \"Double\")\n                .IsLowerThan((double)5, (float)0, \"Double\", \"Custom message here\")\n\n                .IsLowerThan((double)0, (double)0, \"Double\")\n                .IsLowerThan((double)0, (double)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)-5, (double)0, \"Double\")\n                .IsLowerThan((double)-5, (double)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)5, (double)0, \"Double\")\n                .IsLowerThan((double)5, (double)0, \"Double\", \"Custom message here\")\n\n                .IsLowerThan((double)0, (long)0, \"Double\")\n                .IsLowerThan((double)0, (long)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)-5, (long)0, \"Double\")\n                .IsLowerThan((double)-5, (long)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)5, (long)0, \"Double\")\n                .IsLowerThan((double)5, (long)0, \"Double\", \"Custom message here\")\n\n                .IsLowerThan((double)0, (decimal)0, \"Double\")\n                .IsLowerThan((double)0, (decimal)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)-5, (decimal)0, \"Double\")\n                .IsLowerThan((double)-5, (decimal)0, \"Double\", \"Custom message here\")\n                .IsLowerThan((double)5, (decimal)0, \"Double\")\n                .IsLowerThan((double)5, (decimal)0, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is lower or equals than\")]\n        public void RequiresDoubleIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan((double)0, (int)10, \"Double\")\n                .IsLowerOrEqualsThan((double)0, (int)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)10, (int)10, \"Double\")\n                .IsLowerOrEqualsThan((double)10, (int)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)20, (int)10, \"Double\")\n                .IsLowerOrEqualsThan((double)20, (int)10, \"Double\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((double)0, (float)10, \"Double\")\n                .IsLowerOrEqualsThan((double)0, (float)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)10, (float)10, \"Double\")\n                .IsLowerOrEqualsThan((double)10, (float)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)20, (float)10, \"Double\")\n                .IsLowerOrEqualsThan((double)20, (float)10, \"Double\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((double)0, (double)10, \"Double\")\n                .IsLowerOrEqualsThan((double)0, (double)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)10, (double)10, \"Double\")\n                .IsLowerOrEqualsThan((double)10, (double)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)20, (double)10, \"Double\")\n                .IsLowerOrEqualsThan((double)20, (double)10, \"Double\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((double)0, (long)10, \"Double\")\n                .IsLowerOrEqualsThan((double)0, (long)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)10, (long)10, \"Double\")\n                .IsLowerOrEqualsThan((double)10, (long)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)20, (long)10, \"Double\")\n                .IsLowerOrEqualsThan((double)20, (long)10, \"Double\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((double)0, (decimal)10, \"Double\")\n                .IsLowerOrEqualsThan((double)0, (decimal)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)10, (decimal)10, \"Double\")\n                .IsLowerOrEqualsThan((double)10, (decimal)10, \"Double\", \"Custom message here\")\n                .IsLowerOrEqualsThan((double)20, (decimal)10, \"Double\")\n                .IsLowerOrEqualsThan((double)20, (decimal)10, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double has its min value\")]\n        public void RequireDoubleHasItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(double.MaxValue, \"Double\")\n                .IsMinValue(double.MaxValue, \"Double\", \"Custom message here\")\n                .IsMinValue(double.MinValue, \"Double\")\n                .IsMinValue(double.MinValue, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double has not its min value\")]\n        public void RequireDoubleHasNotItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(double.MaxValue, \"Double\")\n                .IsNotMinValue(double.MaxValue, \"Double\", \"Custom message here\")\n                .IsNotMinValue(double.MinValue, \"Double\")\n                .IsNotMinValue(double.MinValue, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double has its max value\")]\n        public void RequireDoubleHasItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(double.MaxValue, \"Double\")\n                .IsMaxValue(double.MaxValue, \"Double\", \"Custom message here\")\n                .IsMaxValue(double.MinValue, \"Double\")\n                .IsMaxValue(double.MinValue, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double has not its max value\")]\n        public void RequireDoubleHasNotItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(double.MaxValue, \"Double\")\n                .IsNotMaxValue(double.MaxValue, \"Double\", \"Custom message here\")\n                .IsNotMaxValue(double.MinValue, \"Double\")\n                .IsNotMaxValue(double.MinValue, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires two doubles are equals\")]\n        public void RequireTwoDoublesAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals((double)0, (int)0, \"Double\")\n                .AreEquals((double)0, (int)0, \"Double\", \"Custom message here\")\n                .AreEquals((double)0, (int)10, \"Double\")\n                .AreEquals((double)0, (int)10, \"Double\", \"Custom message here\")\n\n                .AreEquals((double)0, (float)0, \"Double\")\n                .AreEquals((double)0, (float)0, \"Double\", \"Custom message here\")\n                .AreEquals((double)0, (float)10, \"Double\")\n                .AreEquals((double)0, (float)10, \"Double\", \"Custom message here\")\n\n                .AreEquals((double)0, (double)0, \"Double\")\n                .AreEquals((double)0, (double)0, \"Double\", \"Custom message here\")\n                .AreEquals((double)0, (double)10, \"Double\")\n                .AreEquals((double)0, (double)10, \"Double\", \"Custom message here\")\n\n                .AreEquals((double)0, (long)0, \"Double\")\n                .AreEquals((double)0, (long)0, \"Double\", \"Custom message here\")\n                .AreEquals((double)0, (long)10, \"Double\")\n                .AreEquals((double)0, (long)10, \"Double\", \"Custom message here\")\n\n                .AreEquals((double)0, (decimal)0, \"Double\")\n                .AreEquals((double)0, (decimal)0, \"Double\", \"Custom message here\")\n                .AreEquals((double)0, (decimal)10, \"Double\")\n                .AreEquals((double)0, (decimal)10, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires two doubles are not equals\")]\n        public void RequireTwoDoublesAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals((double)0, (int)0, \"Double\")\n                .AreNotEquals((double)0, (int)0, \"Double\", \"Custom message here\")\n                .AreNotEquals((double)0, (int)10, \"Double\")\n                .AreNotEquals((double)0, (int)10, \"Double\", \"Custom message here\")\n\n                .AreNotEquals((double)0, (float)0, \"Double\")\n                .AreNotEquals((double)0, (float)0, \"Double\", \"Custom message here\")\n                .AreNotEquals((double)0, (float)10, \"Double\")\n                .AreNotEquals((double)0, (float)10, \"Double\", \"Custom message here\")\n\n                .AreNotEquals((double)0, (double)0, \"Double\")\n                .AreNotEquals((double)0, (double)0, \"Double\", \"Custom message here\")\n                .AreNotEquals((double)0, (double)10, \"Double\")\n                .AreNotEquals((double)0, (double)10, \"Double\", \"Custom message here\")\n\n                .AreNotEquals((double)0, (long)0, \"Double\")\n                .AreNotEquals((double)0, (long)0, \"Double\", \"Custom message here\")\n                .AreNotEquals((double)0, (long)10, \"Double\")\n                .AreNotEquals((double)0, (long)10, \"Double\", \"Custom message here\")\n\n                .AreNotEquals((double)0, (decimal)0, \"Double\")\n                .AreNotEquals((double)0, (decimal)0, \"Double\", \"Custom message here\")\n                .AreNotEquals((double)0, (decimal)10, \"Double\")\n                .AreNotEquals((double)0, (decimal)10, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is null\")]\n        public void RequiresDoubleIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.DoubleNull, \"Double\")\n                .IsNull(_entity.DoubleNull, \"Double\", \"Custom message here\")\n                .IsNull(_entity.DoubleStart, \"Double\")\n                .IsNull(_entity.DoubleStart, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is not null\")]\n        public void RequiresDoubleIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.DoubleNull, \"Double\")\n                .IsNotNull(_entity.DoubleNull, \"Double\", \"Custom message here\")\n                .IsNotNull(_entity.DoubleStart, \"Double\")\n                .IsNotNull(_entity.DoubleStart, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is between\")]\n        public void RequiresDoubleIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleStart, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleStart, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleStart, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleStart, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleStart, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleStart, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleStart, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleStart, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleStart, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleStart, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsBetween(_entity.DoubleNotBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a double is not between\")]\n        public void RequiresDoubleIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleStart, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleStart, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (int)_entity.DoubleStart, (int)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleStart, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleStart, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (double)_entity.DoubleStart, (double)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleStart, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleStart, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (float)_entity.DoubleStart, (float)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleStart, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleStart, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, (long)_entity.DoubleStart, (long)_entity.DoubleEnd, \"Double\", \"Custom message here\")\n\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleStart, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleStart, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\")\n                .IsNotBetween(_entity.DoubleNotBetweenStartAndEnd, _entity.DoubleStart, _entity.DoubleEnd, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 30);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a list contains a double\")]\n        public void RequiresListContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains((double)1, _entity.DoubleList, \"Double\")\n                .Contains((double)1, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .Contains((double)3, _entity.DoubleList, \"Double\")\n                .Contains((double)3, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .Contains((double)5, _entity.DoubleList, \"Double\")\n                .Contains((double)5, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .Contains((double)7, _entity.DoubleList, \"Double\")\n                .Contains((double)7, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .Contains((double)9, _entity.DoubleList, \"Double\")\n                .Contains((double)9, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .Contains((double)11, _entity.DoubleList, \"Double\")\n                .Contains((double)11, _entity.DoubleList, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Double Validation\")]\n        [TestMethod(\"Requires a list does not contains a double\")]\n        public void RequiresListNotContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains((double)1, _entity.DoubleList, \"Double\")\n                .NotContains((double)1, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .NotContains((double)3, _entity.DoubleList, \"Double\")\n                .NotContains((double)3, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .NotContains((double)5, _entity.DoubleList, \"Double\")\n                .NotContains((double)5, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .NotContains((double)7, _entity.DoubleList, \"Double\")\n                .NotContains((double)7, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .NotContains((double)9, _entity.DoubleList, \"Double\")\n                .NotContains((double)9, _entity.DoubleList, \"Double\", \"Custom message here\")\n                .NotContains((double)11, _entity.DoubleList, \"Double\")\n                .NotContains((double)11, _entity.DoubleList, \"Double\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/EmailValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class EmailValidationTests\n    {\n        [TestCategory(\"Email Validation\")]\n        [TestMethod(\"Requires a string is an email\")]\n        public void IsEmail()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                // Invalid\n                .IsEmail(\"some string\", \"Email\")\n                .IsEmail(\"some@invalid\", \"Email\", \"Custom error message\")\n                .IsEmail(\"some string\", \"Email\")\n                .IsEmail(\"someinvalid.com\", \"Email\", \"Custom error message\")\n\n                // Valid\n                .IsEmail(\"some@gmail.com\", \"Email\")\n                .IsEmail(\"some@hotmail.com\", \"Email\", \"Custom error message\")\n                .IsEmail(\"some@customdomain.com\", \"Email\")\n                .IsEmail(\"some@mydomain.com.br\", \"Email\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n\n        [TestCategory(\"Email Validation\")]\n        [TestMethod(\"Requires a string is an email or empty\")]\n        public void IsEmailOrEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                // Invalid\n                .IsEmailOrEmpty(\"some string\", \"Email\")\n                .IsEmailOrEmpty(\"some@invalid\", \"Email\", \"Custom error message\")\n                .IsEmailOrEmpty(\"some string\", \"Email\")\n                .IsEmailOrEmpty(\"someinvalid.com\", \"Email\", \"Custom error message\")\n                .IsEmailOrEmpty(\" \", \"Email\")\n                .IsEmailOrEmpty(\" \", \"Email\", \"Custom error message\")\n\n                // Valid\n                .IsEmailOrEmpty(\"\", \"Email\")\n                .IsEmailOrEmpty(\"\", \"Email\", \"Custom error message\")\n                .IsEmailOrEmpty(null, \"Email\")\n                .IsEmailOrEmpty(null, \"Email\", \"Custom error message\")\n                .IsEmailOrEmpty(\"some@gmail.com\", \"Email\")\n                .IsEmailOrEmpty(\"some@hotmail.com\", \"Email\", \"Custom error message\")\n                .IsEmailOrEmpty(\"some@customdomain.com\", \"Email\")\n                .IsEmailOrEmpty(\"some@mydomain.com.br\", \"Email\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n\n        [TestCategory(\"Email Validation\")]\n        [TestMethod(\"Requires a string is not an email\")]\n        public void IsNotEmail()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                // Valid\n                .IsNotEmail(\"some string\", \"Email\")\n                .IsNotEmail(\"some@invalid\", \"Email\", \"Custom error message\")\n                .IsNotEmail(\"some string\", \"Email\")\n                .IsNotEmail(\"someinvalid.com\", \"Email\", \"Custom error message\")\n\n                // Invalid\n                .IsNotEmail(\"some@gmail.com\", \"Email\")\n                .IsNotEmail(\"some@hotmail.com\", \"Email\", \"Custom error message\")\n                .IsNotEmail(\"some@customdomain.com\", \"Email\")\n                .IsNotEmail(\"some@mydomain.com.br\", \"Email\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/Entities/SampleEntity.cs",
    "content": "﻿using System;\nusing System.Collections.Generic;\nusing Flunt.Tests.Enums;\n\nnamespace Flunt.Tests.Entities\n{\n    public class SampleEntity\n    {\n        public bool BoolFalseProperty = false;\n        public bool BoolTrueProperty = true;\n        public bool? BoolNullProperty = null;\n\n        public static DateTime DateTimeSnapshot = DateTime.Now;\n        public DateTime DateTimeStartDate = DateTimeSnapshot.AddHours(-1);\n        public DateTime DateTimeEndDate = DateTimeSnapshot.AddHours(+1);\n        public DateTime DateTimeGreaterThanNow = DateTimeSnapshot.AddHours(1);\n        public DateTime DateTimeGreaterOrEqualsThanNow = DateTimeSnapshot;\n        public DateTime DateTimeLowerThanNow = DateTimeSnapshot.AddHours(-1);\n        public DateTime DateTimeLowerOrEqualsThanNow = DateTimeSnapshot;\n        public DateTime? DateTimeNull = null;\n        public DateTime DateTimeBetweenStartAndEndDate = DateTimeSnapshot;\n        public DateTime DateTimeNotBetweenStartAndEndDate = DateTimeSnapshot.AddHours(+5);\n        public List<DateTime> DateTimeList = new List<DateTime> { DateTimeSnapshot };\n\n        public static TimeSpan TimeSpanSnapshot = DateTime.Now.TimeOfDay;\n        public TimeSpan TimeSpanStartDate = TimeSpanSnapshot.Add(new TimeSpan(0, -1, 0, 0));\n        public TimeSpan TimeSpanEndDate = TimeSpanSnapshot.Add(new TimeSpan(0, 1, 0, 0));\n        public TimeSpan TimeSpanGreaterThanNow = TimeSpanSnapshot.Add(new TimeSpan(0, 1, 0, 0));\n        public TimeSpan TimeSpanGreaterOrEqualsThanNow = TimeSpanSnapshot;\n        public TimeSpan TimeSpanLowerThanNow = TimeSpanSnapshot.Add(new TimeSpan(0, -1, 0, 0));\n        public TimeSpan TimeSpanLowerOrEqualsThanNow = TimeSpanSnapshot;\n        public TimeSpan? TimeSpanNull = null;\n        public TimeSpan TimeSpanBetweenStartAndEndDate = TimeSpanSnapshot;\n        public TimeSpan TimeSpanNotBetweenStartAndEndDate = TimeSpanSnapshot.Add(new TimeSpan(0, 5, 0, 0));\n        public List<TimeSpan> TimeSpanList = new List<TimeSpan> { TimeSpanSnapshot };\n\n        public int IntStart = 0;\n        public int IntEnd = 100;\n        public int? IntNull = null;\n        public int IntBetweenStartAndEnd = 5;\n        public int IntNotBetweenStartAndEnd = -50;\n        public List<int> IntList = new List<int> { 1, 3, 5, 7, 9 };\n\n        public long LongStart = 0;\n        public long LongEnd = 100;\n        public long? LongNull = null;\n        public long LongBetweenStartAndEnd = 5;\n        public long LongNotBetweenStartAndEnd = -50;\n        public List<long> LongList = new List<long> { 1, 3, 5, 7, 9 };\n\n        public double DoubleStart = 0;\n        public double DoubleEnd = 100;\n        public double? DoubleNull = null;\n        public double DoubleBetweenStartAndEnd = 5;\n        public double DoubleNotBetweenStartAndEnd = -50;\n        public List<double> DoubleList = new List<double> { 1, 3, 5, 7, 9 };\n\n        public float FloatStart = 0;\n        public float FloatEnd = 100;\n        public float? FloatNull = null;\n        public float FloatBetweenStartAndEnd = 5;\n        public float FloatNotBetweenStartAndEnd = -50;\n        public List<float> FloatList = new List<float> { 1, 3, 5, 7, 9 };\n\n        public decimal DecimalStart = 0;\n        public decimal DecimalEnd = 100;\n        public decimal? DecimalNull = null;\n        public decimal DecimalBetweenStartAndEnd = 5;\n        public decimal DecimalNotBetweenStartAndEnd = -50;\n        public List<decimal> DecimalList = new List<decimal> { 1, 3, 5, 7, 9 };\n\n        public Guid GuidEmpty = Guid.Empty;\n        public Guid GuidNotEmpty = new Guid(\"f4ac2eab-8de5-430a-85b1-f0daa71df176\");\n\n        public IList<string> ListNull = null;\n        public IList<string> ListNotNull = new List<string> { \"Some item\" };\n        public IList<string> ListEmpty = new List<string>();\n        public IList<string> ListNotEmpty = new List<string> { \"Some item\", \"other item\", \"last item\" };\n\n        public SampleEnum Enum = SampleEnum.Value;\n\n        public SampleObject ObjectNull = null;\n        public SampleObject ObjectToCompare = new SampleObject(1);\n        public SampleObject ObjectAnotherToCompare = new SampleObject(1);\n\n        public string StringNull = null;\n        public string StringEmpty = string.Empty;\n        public string StringNotEmpty = \"some string\";\n        public string StringWhiteSpace = \" \";\n        public string StringFiveCharsLong = \"A2D3R\";\n        public string StringNumbersOnly = \"123456\";\n        public string StringSpecialCharsOnly = \"@#$%$#$$\";\n    }\n\n    public class SampleObject : IEquatable<SampleObject>\n    {\n        public SampleObject(int id)\n        {\n            Id = id;\n        }\n\n        public int Id { get; set; }\n        public bool Equals(SampleObject other) => Id == other?.Id;\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/Enums/SampleEnum.cs",
    "content": "﻿namespace Flunt.Tests.Enums\n{\n    public enum SampleEnum\n    {\n        Value = 1,\n        Other = 2,\n        Sample = 3,\n        OneMoreSample = 4\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/FloatValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class FloatValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is greater than\")]\n        public void RequiresFloatIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan((float)0, (int)10, \"Float\")\n                .IsGreaterThan((float)0, (int)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)10, (int)10, \"Float\")\n                .IsGreaterThan((float)10, (int)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)20, (int)10, \"Float\")\n                .IsGreaterThan((float)20, (int)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterThan((float)0, (float)10, \"Float\")\n                .IsGreaterThan((float)0, (float)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)10, (float)10, \"Float\")\n                .IsGreaterThan((float)10, (float)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)20, (float)10, \"Float\")\n                .IsGreaterThan((float)20, (float)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterThan((float)0, (double)10, \"Float\")\n                .IsGreaterThan((float)0, (double)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)10, (double)10, \"Float\")\n                .IsGreaterThan((float)10, (double)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)20, (double)10, \"Float\")\n                .IsGreaterThan((float)20, (double)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterThan((float)0, (long)10, \"Float\")\n                .IsGreaterThan((float)0, (long)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)10, (long)10, \"Float\")\n                .IsGreaterThan((float)10, (long)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)20, (long)10, \"Float\")\n                .IsGreaterThan((float)20, (long)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterThan((float)0, (decimal)10, \"Float\")\n                .IsGreaterThan((float)0, (decimal)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)10, (decimal)10, \"Float\")\n                .IsGreaterThan((float)10, (decimal)10, \"Float\", \"Custom message here\")\n                .IsGreaterThan((float)20, (decimal)10, \"Float\")\n                .IsGreaterThan((float)20, (decimal)10, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is greater or equals than\")]\n        public void RequiresFloatIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan((float)0, (int)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)0, (int)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)10, (int)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)10, (int)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)20, (int)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)20, (int)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((float)0, (float)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)0, (float)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)10, (float)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)10, (float)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)20, (float)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)20, (float)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((float)0, (double)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)0, (double)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)10, (double)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)10, (double)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)20, (double)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)20, (double)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((float)0, (long)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)0, (long)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)10, (long)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)10, (long)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)20, (long)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)20, (long)10, \"Float\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((float)0, (decimal)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)0, (decimal)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)10, (decimal)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)10, (decimal)10, \"Float\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((float)20, (decimal)10, \"Float\")\n                .IsGreaterOrEqualsThan((float)20, (decimal)10, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is lower than\")]\n        public void RequiresFloatIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan((float)0, (int)0, \"Float\")\n                .IsLowerThan((float)0, (int)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)-5, (int)0, \"Float\")\n                .IsLowerThan((float)-5, (int)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)5, (int)0, \"Float\")\n                .IsLowerThan((float)5, (int)0, \"Float\", \"Custom message here\")\n\n                .IsLowerThan((float)0, (float)0, \"Float\")\n                .IsLowerThan((float)0, (float)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)-5, (float)0, \"Float\")\n                .IsLowerThan((float)-5, (float)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)5, (float)0, \"Float\")\n                .IsLowerThan((float)5, (float)0, \"Float\", \"Custom message here\")\n\n                .IsLowerThan((float)0, (double)0, \"Float\")\n                .IsLowerThan((float)0, (double)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)-5, (double)0, \"Float\")\n                .IsLowerThan((float)-5, (double)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)5, (double)0, \"Float\")\n                .IsLowerThan((float)5, (double)0, \"Float\", \"Custom message here\")\n\n                .IsLowerThan((float)0, (long)0, \"Float\")\n                .IsLowerThan((float)0, (long)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)-5, (long)0, \"Float\")\n                .IsLowerThan((float)-5, (long)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)5, (long)0, \"Float\")\n                .IsLowerThan((float)5, (long)0, \"Float\", \"Custom message here\")\n\n                .IsLowerThan((float)0, (decimal)0, \"Float\")\n                .IsLowerThan((float)0, (decimal)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)-5, (decimal)0, \"Float\")\n                .IsLowerThan((float)-5, (decimal)0, \"Float\", \"Custom message here\")\n                .IsLowerThan((float)5, (decimal)0, \"Float\")\n                .IsLowerThan((float)5, (decimal)0, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is lower or equals than\")]\n        public void RequiresFloatIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan((float)0, (int)10, \"Float\")\n                .IsLowerOrEqualsThan((float)0, (int)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)10, (int)10, \"Float\")\n                .IsLowerOrEqualsThan((float)10, (int)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)20, (int)10, \"Float\")\n                .IsLowerOrEqualsThan((float)20, (int)10, \"Float\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((float)0, (float)10, \"Float\")\n                .IsLowerOrEqualsThan((float)0, (float)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)10, (float)10, \"Float\")\n                .IsLowerOrEqualsThan((float)10, (float)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)20, (float)10, \"Float\")\n                .IsLowerOrEqualsThan((float)20, (float)10, \"Float\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((float)0, (double)10, \"Float\")\n                .IsLowerOrEqualsThan((float)0, (double)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)10, (double)10, \"Float\")\n                .IsLowerOrEqualsThan((float)10, (double)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)20, (double)10, \"Float\")\n                .IsLowerOrEqualsThan((float)20, (double)10, \"Float\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((float)0, (long)10, \"Float\")\n                .IsLowerOrEqualsThan((float)0, (long)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)10, (long)10, \"Float\")\n                .IsLowerOrEqualsThan((float)10, (long)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)20, (long)10, \"Float\")\n                .IsLowerOrEqualsThan((float)20, (long)10, \"Float\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((float)0, (decimal)10, \"Float\")\n                .IsLowerOrEqualsThan((float)0, (decimal)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)10, (decimal)10, \"Float\")\n                .IsLowerOrEqualsThan((float)10, (decimal)10, \"Float\", \"Custom message here\")\n                .IsLowerOrEqualsThan((float)20, (decimal)10, \"Float\")\n                .IsLowerOrEqualsThan((float)20, (decimal)10, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float has its min value\")]\n        public void RequireFloatHasItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(float.MaxValue, \"Float\")\n                .IsMinValue(float.MaxValue, \"Float\", \"Custom message here\")\n                .IsMinValue(float.MinValue, \"Float\")\n                .IsMinValue(float.MinValue, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float has not its min value\")]\n        public void RequireFloatHasNotItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(float.MaxValue, \"Float\")\n                .IsNotMinValue(float.MaxValue, \"Float\", \"Custom message here\")\n                .IsNotMinValue(float.MinValue, \"Float\")\n                .IsNotMinValue(float.MinValue, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float has its max value\")]\n        public void RequireFloatHasItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(float.MaxValue, \"Float\")\n                .IsMaxValue(float.MaxValue, \"Float\", \"Custom message here\")\n                .IsMaxValue(float.MinValue, \"Float\")\n                .IsMaxValue(float.MinValue, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float has not its max value\")]\n        public void RequireFloatHasNotItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(float.MaxValue, \"Float\")\n                .IsNotMaxValue(float.MaxValue, \"Float\", \"Custom message here\")\n                .IsNotMaxValue(float.MinValue, \"Float\")\n                .IsNotMaxValue(float.MinValue, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires two floats are equals\")]\n        public void RequireTwoFloatsAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals((float)0, (int)0, \"Float\")\n                .AreEquals((float)0, (int)0, \"Float\", \"Custom message here\")\n                .AreEquals((float)0, (int)10, \"Float\")\n                .AreEquals((float)0, (int)10, \"Float\", \"Custom message here\")\n\n                .AreEquals((float)0, (float)0, \"Float\")\n                .AreEquals((float)0, (float)0, \"Float\", \"Custom message here\")\n                .AreEquals((float)0, (float)10, \"Float\")\n                .AreEquals((float)0, (float)10, \"Float\", \"Custom message here\")\n\n                .AreEquals((float)0, (double)0, \"Float\")\n                .AreEquals((float)0, (double)0, \"Float\", \"Custom message here\")\n                .AreEquals((float)0, (double)10, \"Float\")\n                .AreEquals((float)0, (double)10, \"Float\", \"Custom message here\")\n\n                .AreEquals((float)0, (long)0, \"Float\")\n                .AreEquals((float)0, (long)0, \"Float\", \"Custom message here\")\n                .AreEquals((float)0, (long)10, \"Float\")\n                .AreEquals((float)0, (long)10, \"Float\", \"Custom message here\")\n\n                .AreEquals((float)0, (decimal)0, \"Float\")\n                .AreEquals((float)0, (decimal)0, \"Float\", \"Custom message here\")\n                .AreEquals((float)0, (decimal)10, \"Float\")\n                .AreEquals((float)0, (decimal)10, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires two floats are not equals\")]\n        public void RequireTwoFloatsAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals((float)0, (int)0, \"Float\")\n                .AreNotEquals((float)0, (int)0, \"Float\", \"Custom message here\")\n                .AreNotEquals((float)0, (int)10, \"Float\")\n                .AreNotEquals((float)0, (int)10, \"Float\", \"Custom message here\")\n\n                .AreNotEquals((float)0, (float)0, \"Float\")\n                .AreNotEquals((float)0, (float)0, \"Float\", \"Custom message here\")\n                .AreNotEquals((float)0, (float)10, \"Float\")\n                .AreNotEquals((float)0, (float)10, \"Float\", \"Custom message here\")\n\n                .AreNotEquals((float)0, (double)0, \"Float\")\n                .AreNotEquals((float)0, (double)0, \"Float\", \"Custom message here\")\n                .AreNotEquals((float)0, (double)10, \"Float\")\n                .AreNotEquals((float)0, (double)10, \"Float\", \"Custom message here\")\n\n                .AreNotEquals((float)0, (long)0, \"Float\")\n                .AreNotEquals((float)0, (long)0, \"Float\", \"Custom message here\")\n                .AreNotEquals((float)0, (long)10, \"Float\")\n                .AreNotEquals((float)0, (long)10, \"Float\", \"Custom message here\")\n\n                .AreNotEquals((float)0, (decimal)0, \"Float\")\n                .AreNotEquals((float)0, (decimal)0, \"Float\", \"Custom message here\")\n                .AreNotEquals((float)0, (decimal)10, \"Float\")\n                .AreNotEquals((float)0, (decimal)10, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is null\")]\n        public void RequiresFloatIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.FloatNull, \"Float\")\n                .IsNull(_entity.FloatNull, \"Float\", \"Custom message here\")\n                .IsNull(_entity.FloatStart, \"Float\")\n                .IsNull(_entity.FloatStart, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is not null\")]\n        public void RequiresFloatIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.FloatNull, \"Float\")\n                .IsNotNull(_entity.FloatNull, \"Float\", \"Custom message here\")\n                .IsNotNull(_entity.FloatStart, \"Float\")\n                .IsNotNull(_entity.FloatStart, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is between\")]\n        public void RequiresFloatIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatStart, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatStart, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatStart, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatStart, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatStart, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatStart, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatStart, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatStart, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsBetween(_entity.FloatBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatStart, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatStart, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsBetween(_entity.FloatNotBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a float is not between\")]\n        public void RequiresFloatIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatStart, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatStart, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (int)_entity.FloatStart, (int)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatStart, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatStart, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (double)_entity.FloatStart, (double)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatStart, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatStart, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (float)_entity.FloatStart, (float)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatStart, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatStart, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, (long)_entity.FloatStart, (long)_entity.FloatEnd, \"Float\", \"Custom message here\")\n\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatStart, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatStart, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\")\n                .IsNotBetween(_entity.FloatNotBetweenStartAndEnd, _entity.FloatStart, _entity.FloatEnd, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 30);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a list contains a float\")]\n        public void RequiresListContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains((float)1, _entity.FloatList, \"Float\")\n                .Contains((float)1, _entity.FloatList, \"Float\", \"Custom message here\")\n                .Contains((float)3, _entity.FloatList, \"Float\")\n                .Contains((float)3, _entity.FloatList, \"Float\", \"Custom message here\")\n                .Contains((float)5, _entity.FloatList, \"Float\")\n                .Contains((float)5, _entity.FloatList, \"Float\", \"Custom message here\")\n                .Contains((float)7, _entity.FloatList, \"Float\")\n                .Contains((float)7, _entity.FloatList, \"Float\", \"Custom message here\")\n                .Contains((float)9, _entity.FloatList, \"Float\")\n                .Contains((float)9, _entity.FloatList, \"Float\", \"Custom message here\")\n                .Contains((float)11, _entity.FloatList, \"Float\")\n                .Contains((float)11, _entity.FloatList, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Float Validation\")]\n        [TestMethod(\"Requires a list does not contains a float\")]\n        public void RequiresListNotContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains((float)1, _entity.FloatList, \"Float\")\n                .NotContains((float)1, _entity.FloatList, \"Float\", \"Custom message here\")\n                .NotContains((float)3, _entity.FloatList, \"Float\")\n                .NotContains((float)3, _entity.FloatList, \"Float\", \"Custom message here\")\n                .NotContains((float)5, _entity.FloatList, \"Float\")\n                .NotContains((float)5, _entity.FloatList, \"Float\", \"Custom message here\")\n                .NotContains((float)7, _entity.FloatList, \"Float\")\n                .NotContains((float)7, _entity.FloatList, \"Float\", \"Custom message here\")\n                .NotContains((float)9, _entity.FloatList, \"Float\")\n                .NotContains((float)9, _entity.FloatList, \"Float\", \"Custom message here\")\n                .NotContains((float)11, _entity.FloatList, \"Float\")\n                .NotContains((float)11, _entity.FloatList, \"Float\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/Flunt.Tests.csproj",
    "content": "<Project Sdk=\"Microsoft.NET.Sdk\">\n\n  <PropertyGroup>\n    <TargetFramework>net6.0</TargetFramework>\n\n    <IsPackable>false</IsPackable>\n  </PropertyGroup>\n\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.NET.Test.Sdk\" Version=\"17.2.0\" />\n    <PackageReference Include=\"MSTest.TestAdapter\" Version=\"2.2.10\" />\n    <PackageReference Include=\"MSTest.TestFramework\" Version=\"2.2.10\" />\n    <PackageReference Include=\"coverlet.collector\" Version=\"3.1.2\">\n      <PrivateAssets>all</PrivateAssets>\n      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>\n    </PackageReference>\n  </ItemGroup>\n\n  <ItemGroup>\n    <ProjectReference Include=\"..\\Flunt\\Flunt.csproj\" />\n  </ItemGroup>\n\n</Project>\n"
  },
  {
    "path": "Flunt.Tests/GuidValidationTests.cs",
    "content": "﻿using System;\nusing Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class GuidValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Guid Validation\")]\n        [TestMethod(\"Requires two GUIDs are equals\")]\n        public void RequiresAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals(_entity.GuidNotEmpty, _entity.GuidNotEmpty, \"Guid\")\n                .AreEquals(_entity.GuidNotEmpty, _entity.GuidNotEmpty, \"Guid\", \"Custom message here\")\n                .AreEquals(_entity.GuidNotEmpty, Guid.NewGuid(), \"Guid\")\n                .AreEquals(_entity.GuidNotEmpty, Guid.NewGuid(), \"Guid\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Guid Validation\")]\n        [TestMethod(\"Requires two GUIDs are not equals\")]\n        public void RequiresAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals(_entity.GuidNotEmpty, _entity.GuidNotEmpty, \"Guid\")\n                .AreNotEquals(_entity.GuidNotEmpty, _entity.GuidNotEmpty, \"Guid\", \"Custom message here\")\n                .AreNotEquals(_entity.GuidNotEmpty, Guid.NewGuid(), \"Guid\")\n                .AreNotEquals(_entity.GuidNotEmpty, Guid.NewGuid(), \"Guid\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Guid Validation\")]\n        [TestMethod(\"Requires GUID is empty\")]\n        public void RequiresIsEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsEmpty(_entity.GuidNotEmpty, \"Guid\")\n                .IsEmpty(_entity.GuidNotEmpty, \"Guid\", \"Custom message here\")\n                .IsEmpty(_entity.GuidEmpty, \"Guid\")\n                .IsEmpty(_entity.GuidEmpty, \"Guid\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Guid Validation\")]\n        [TestMethod(\"Requires GUID is not empty\")]\n        public void RequiresIsNotEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotEmpty(_entity.GuidNotEmpty, \"Guid\")\n                .IsNotEmpty(_entity.GuidNotEmpty, \"Guid\", \"Custom message here\")\n                .IsNotEmpty(_entity.GuidEmpty, \"Guid\")\n                .IsNotEmpty(_entity.GuidEmpty, \"Guid\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/IntValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class IntValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is greater than\")]\n        public void RequiresIntIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan((int)0, (int)10, \"Int\")\n                .IsGreaterThan((int)0, (int)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)10, (int)10, \"Int\")\n                .IsGreaterThan((int)10, (int)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)20, (int)10, \"Int\")\n                .IsGreaterThan((int)20, (int)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterThan((int)0, (float)10, \"Int\")\n                .IsGreaterThan((int)0, (float)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)10, (float)10, \"Int\")\n                .IsGreaterThan((int)10, (float)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)20, (float)10, \"Int\")\n                .IsGreaterThan((int)20, (float)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterThan((int)0, (double)10, \"Int\")\n                .IsGreaterThan((int)0, (double)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)10, (double)10, \"Int\")\n                .IsGreaterThan((int)10, (double)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)20, (double)10, \"Int\")\n                .IsGreaterThan((int)20, (double)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterThan((int)0, (long)10, \"Int\")\n                .IsGreaterThan((int)0, (long)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)10, (long)10, \"Int\")\n                .IsGreaterThan((int)10, (long)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)20, (long)10, \"Int\")\n                .IsGreaterThan((int)20, (long)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterThan((int)0, (decimal)10, \"Int\")\n                .IsGreaterThan((int)0, (decimal)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)10, (decimal)10, \"Int\")\n                .IsGreaterThan((int)10, (decimal)10, \"Int\", \"Custom message here\")\n                .IsGreaterThan((int)20, (decimal)10, \"Int\")\n                .IsGreaterThan((int)20, (decimal)10, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is greater or equals than\")]\n        public void RequiresIntIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan((int)0, (int)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)0, (int)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)10, (int)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)10, (int)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)20, (int)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)20, (int)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((int)0, (float)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)0, (float)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)10, (float)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)10, (float)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)20, (float)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)20, (float)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((int)0, (double)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)0, (double)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)10, (double)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)10, (double)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)20, (double)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)20, (double)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((int)0, (long)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)0, (long)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)10, (long)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)10, (long)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)20, (long)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)20, (long)10, \"Int\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((int)0, (decimal)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)0, (decimal)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)10, (decimal)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)10, (decimal)10, \"Int\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((int)20, (decimal)10, \"Int\")\n                .IsGreaterOrEqualsThan((int)20, (decimal)10, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is lower than\")]\n        public void RequiresIntIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan((int)0, (int)0, \"Int\")\n                .IsLowerThan((int)0, (int)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)-5, (int)0, \"Int\")\n                .IsLowerThan((int)-5, (int)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)5, (int)0, \"Int\")\n                .IsLowerThan((int)5, (int)0, \"Int\", \"Custom message here\")\n\n                .IsLowerThan((int)0, (float)0, \"Int\")\n                .IsLowerThan((int)0, (float)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)-5, (float)0, \"Int\")\n                .IsLowerThan((int)-5, (float)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)5, (float)0, \"Int\")\n                .IsLowerThan((int)5, (float)0, \"Int\", \"Custom message here\")\n\n                .IsLowerThan((int)0, (double)0, \"Int\")\n                .IsLowerThan((int)0, (double)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)-5, (double)0, \"Int\")\n                .IsLowerThan((int)-5, (double)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)5, (double)0, \"Int\")\n                .IsLowerThan((int)5, (double)0, \"Int\", \"Custom message here\")\n\n                .IsLowerThan((int)0, (long)0, \"Int\")\n                .IsLowerThan((int)0, (long)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)-5, (long)0, \"Int\")\n                .IsLowerThan((int)-5, (long)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)5, (long)0, \"Int\")\n                .IsLowerThan((int)5, (long)0, \"Int\", \"Custom message here\")\n\n                .IsLowerThan((int)0, (decimal)0, \"Int\")\n                .IsLowerThan((int)0, (decimal)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)-5, (decimal)0, \"Int\")\n                .IsLowerThan((int)-5, (decimal)0, \"Int\", \"Custom message here\")\n                .IsLowerThan((int)5, (decimal)0, \"Int\")\n                .IsLowerThan((int)5, (decimal)0, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is lower or equals than\")]\n        public void RequiresIntIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan((int)0, (int)10, \"Int\")\n                .IsLowerOrEqualsThan((int)0, (int)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)10, (int)10, \"Int\")\n                .IsLowerOrEqualsThan((int)10, (int)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)20, (int)10, \"Int\")\n                .IsLowerOrEqualsThan((int)20, (int)10, \"Int\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((int)0, (float)10, \"Int\")\n                .IsLowerOrEqualsThan((int)0, (float)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)10, (float)10, \"Int\")\n                .IsLowerOrEqualsThan((int)10, (float)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)20, (float)10, \"Int\")\n                .IsLowerOrEqualsThan((int)20, (float)10, \"Int\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((int)0, (double)10, \"Int\")\n                .IsLowerOrEqualsThan((int)0, (double)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)10, (double)10, \"Int\")\n                .IsLowerOrEqualsThan((int)10, (double)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)20, (double)10, \"Int\")\n                .IsLowerOrEqualsThan((int)20, (double)10, \"Int\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((int)0, (long)10, \"Int\")\n                .IsLowerOrEqualsThan((int)0, (long)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)10, (long)10, \"Int\")\n                .IsLowerOrEqualsThan((int)10, (long)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)20, (long)10, \"Int\")\n                .IsLowerOrEqualsThan((int)20, (long)10, \"Int\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((int)0, (decimal)10, \"Int\")\n                .IsLowerOrEqualsThan((int)0, (decimal)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)10, (decimal)10, \"Int\")\n                .IsLowerOrEqualsThan((int)10, (decimal)10, \"Int\", \"Custom message here\")\n                .IsLowerOrEqualsThan((int)20, (decimal)10, \"Int\")\n                .IsLowerOrEqualsThan((int)20, (decimal)10, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int has its min value\")]\n        public void RequireIntHasItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(int.MaxValue, \"Int\")\n                .IsMinValue(int.MaxValue, \"Int\", \"Custom message here\")\n                .IsMinValue(int.MinValue, \"Int\")\n                .IsMinValue(int.MinValue, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int has not its min value\")]\n        public void RequireIntHasNotItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(int.MaxValue, \"Int\")\n                .IsNotMinValue(int.MaxValue, \"Int\", \"Custom message here\")\n                .IsNotMinValue(int.MinValue, \"Int\")\n                .IsNotMinValue(int.MinValue, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int has its max value\")]\n        public void RequireIntHasItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(int.MaxValue, \"Int\")\n                .IsMaxValue(int.MaxValue, \"Int\", \"Custom message here\")\n                .IsMaxValue(int.MinValue, \"Int\")\n                .IsMaxValue(int.MinValue, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int has not its max value\")]\n        public void RequireIntHasNotItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(int.MaxValue, \"Int\")\n                .IsNotMaxValue(int.MaxValue, \"Int\", \"Custom message here\")\n                .IsNotMaxValue(int.MinValue, \"Int\")\n                .IsNotMaxValue(int.MinValue, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires two ints are equals\")]\n        public void RequireTwoIntsAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals((int)0, (int)0, \"Int\")\n                .AreEquals((int)0, (int)0, \"Int\", \"Custom message here\")\n                .AreEquals((int)0, (int)10, \"Int\")\n                .AreEquals((int)0, (int)10, \"Int\", \"Custom message here\")\n\n                .AreEquals((int)0, (float)0, \"Int\")\n                .AreEquals((int)0, (float)0, \"Int\", \"Custom message here\")\n                .AreEquals((int)0, (float)10, \"Int\")\n                .AreEquals((int)0, (float)10, \"Int\", \"Custom message here\")\n\n                .AreEquals((int)0, (double)0, \"Int\")\n                .AreEquals((int)0, (double)0, \"Int\", \"Custom message here\")\n                .AreEquals((int)0, (double)10, \"Int\")\n                .AreEquals((int)0, (double)10, \"Int\", \"Custom message here\")\n\n                .AreEquals((int)0, (long)0, \"Int\")\n                .AreEquals((int)0, (long)0, \"Int\", \"Custom message here\")\n                .AreEquals((int)0, (long)10, \"Int\")\n                .AreEquals((int)0, (long)10, \"Int\", \"Custom message here\")\n\n                .AreEquals((int)0, (decimal)0, \"Int\")\n                .AreEquals((int)0, (decimal)0, \"Int\", \"Custom message here\")\n                .AreEquals((int)0, (decimal)10, \"Int\")\n                .AreEquals((int)0, (decimal)10, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires two ints are not equals\")]\n        public void RequireTwoIntsAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals((int)0, (int)0, \"Int\")\n                .AreNotEquals((int)0, (int)0, \"Int\", \"Custom message here\")\n                .AreNotEquals((int)0, (int)10, \"Int\")\n                .AreNotEquals((int)0, (int)10, \"Int\", \"Custom message here\")\n\n                .AreNotEquals((int)0, (float)0, \"Int\")\n                .AreNotEquals((int)0, (float)0, \"Int\", \"Custom message here\")\n                .AreNotEquals((int)0, (float)10, \"Int\")\n                .AreNotEquals((int)0, (float)10, \"Int\", \"Custom message here\")\n\n                .AreNotEquals((int)0, (double)0, \"Int\")\n                .AreNotEquals((int)0, (double)0, \"Int\", \"Custom message here\")\n                .AreNotEquals((int)0, (double)10, \"Int\")\n                .AreNotEquals((int)0, (double)10, \"Int\", \"Custom message here\")\n\n                .AreNotEquals((int)0, (long)0, \"Int\")\n                .AreNotEquals((int)0, (long)0, \"Int\", \"Custom message here\")\n                .AreNotEquals((int)0, (long)10, \"Int\")\n                .AreNotEquals((int)0, (long)10, \"Int\", \"Custom message here\")\n\n                .AreNotEquals((int)0, (decimal)0, \"Int\")\n                .AreNotEquals((int)0, (decimal)0, \"Int\", \"Custom message here\")\n                .AreNotEquals((int)0, (decimal)10, \"Int\")\n                .AreNotEquals((int)0, (decimal)10, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is null\")]\n        public void RequiresIntIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.IntNull, \"Int\")\n                .IsNull(_entity.IntNull, \"Int\", \"Custom message here\")\n                .IsNull(_entity.IntStart, \"Int\")\n                .IsNull(_entity.IntStart, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is not null\")]\n        public void RequiresIntIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.IntNull, \"Int\")\n                .IsNotNull(_entity.IntNull, \"Int\", \"Custom message here\")\n                .IsNotNull(_entity.IntStart, \"Int\")\n                .IsNotNull(_entity.IntStart, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is between\")]\n        public void RequiresIntIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.IntBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntStart, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntStart, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsBetween(_entity.IntBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntStart, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntStart, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsBetween(_entity.IntBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntStart, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntStart, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsBetween(_entity.IntBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntStart, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntStart, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsBetween(_entity.IntBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntStart, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntStart, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntEnd, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntEnd, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsBetween(_entity.IntNotBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires an int is not between\")]\n        public void RequiresIntIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntStart, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntStart, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (int)_entity.IntStart, (int)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntStart, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntStart, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (double)_entity.IntStart, (double)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntStart, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntStart, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (float)_entity.IntStart, (float)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntStart, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntStart, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, (long)_entity.IntStart, (long)_entity.IntEnd, \"Int\", \"Custom message here\")\n\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntStart, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntStart, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntEnd, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntEnd, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\")\n                .IsNotBetween(_entity.IntNotBetweenStartAndEnd, _entity.IntStart, _entity.IntEnd, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 30);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires a list contains an int\")]\n        public void RequiresListContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains((int)1, _entity.IntList, \"Int\")\n                .Contains((int)1, _entity.IntList, \"Int\", \"Custom message here\")\n                .Contains((int)3, _entity.IntList, \"Int\")\n                .Contains((int)3, _entity.IntList, \"Int\", \"Custom message here\")\n                .Contains((int)5, _entity.IntList, \"Int\")\n                .Contains((int)5, _entity.IntList, \"Int\", \"Custom message here\")\n                .Contains((int)7, _entity.IntList, \"Int\")\n                .Contains((int)7, _entity.IntList, \"Int\", \"Custom message here\")\n                .Contains((int)9, _entity.IntList, \"Int\")\n                .Contains((int)9, _entity.IntList, \"Int\", \"Custom message here\")\n                .Contains((int)11, _entity.IntList, \"Int\")\n                .Contains((int)11, _entity.IntList, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Int Validation\")]\n        [TestMethod(\"Requires a list does not contains an int\")]\n        public void RequiresListNotContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains((int)1, _entity.IntList, \"Int\")\n                .NotContains((int)1, _entity.IntList, \"Int\", \"Custom message here\")\n                .NotContains((int)3, _entity.IntList, \"Int\")\n                .NotContains((int)3, _entity.IntList, \"Int\", \"Custom message here\")\n                .NotContains((int)5, _entity.IntList, \"Int\")\n                .NotContains((int)5, _entity.IntList, \"Int\", \"Custom message here\")\n                .NotContains((int)7, _entity.IntList, \"Int\")\n                .NotContains((int)7, _entity.IntList, \"Int\", \"Custom message here\")\n                .NotContains((int)9, _entity.IntList, \"Int\")\n                .NotContains((int)9, _entity.IntList, \"Int\", \"Custom message here\")\n                .NotContains((int)11, _entity.IntList, \"Int\")\n                .NotContains((int)11, _entity.IntList, \"Int\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/ListValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class ListValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list is null\")]\n        public void RequiresIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.ListNull, \"List\")\n                .IsNull(_entity.ListNull, \"List\", \"Custom message here\")\n                .IsNull(_entity.ListNotNull, \"List\")\n                .IsNull(_entity.ListNotNull, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list is not null\")]\n        public void RequiresIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.ListNull, \"List\")\n                .IsNotNull(_entity.ListNull, \"List\", \"Custom message here\")\n                .IsNotNull(_entity.ListNotNull, \"List\")\n                .IsNotNull(_entity.ListNotNull, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list has no elements\")]\n        public void RequiresIsEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsEmpty(_entity.ListEmpty, \"List\")\n                .IsEmpty(_entity.ListEmpty, \"List\", \"Custom message here\")\n                .IsEmpty(_entity.ListNotEmpty, \"List\")\n                .IsEmpty(_entity.ListNotEmpty, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list has at least one element\")]\n        public void RequiresIsNotEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotEmpty(_entity.ListEmpty, \"List\")\n                .IsNotEmpty(_entity.ListEmpty, \"List\", \"Custom message here\")\n                .IsNotEmpty(_entity.ListNotEmpty, \"List\")\n                .IsNotEmpty(_entity.ListNotEmpty, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list count is greater than\")]\n        public void RequiresIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan(_entity.ListNotEmpty, 0, \"List\")\n                .IsGreaterThan(_entity.ListNotEmpty, 1, \"List\")\n                .IsGreaterThan(_entity.ListNotEmpty, 2, \"List\")\n                .IsGreaterThan(_entity.ListNotEmpty, 3, \"List\")\n                .IsGreaterThan(_entity.ListNotEmpty, 4, \"List\")\n\n                .IsGreaterThan(_entity.ListNotEmpty, 0, \"List\", \"Custom message here\")\n                .IsGreaterThan(_entity.ListNotEmpty, 1, \"List\", \"Custom message here\")\n                .IsGreaterThan(_entity.ListNotEmpty, 2, \"List\", \"Custom message here\")\n                .IsGreaterThan(_entity.ListNotEmpty, 3, \"List\", \"Custom message here\")\n                .IsGreaterThan(_entity.ListNotEmpty, 4, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list count is greater or equals than\")]\n        public void RequiresIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 0, \"List\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 1, \"List\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 2, \"List\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 3, \"List\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 4, \"List\")\n\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 0, \"List\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 1, \"List\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 2, \"List\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 3, \"List\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(_entity.ListNotEmpty, 4, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list count is lower than\")]\n        public void RequiresIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan(_entity.ListNotEmpty, 0, \"List\")\n                .IsLowerThan(_entity.ListNotEmpty, 1, \"List\")\n                .IsLowerThan(_entity.ListNotEmpty, 2, \"List\")\n                .IsLowerThan(_entity.ListNotEmpty, 3, \"List\")\n                .IsLowerThan(_entity.ListNotEmpty, 4, \"List\")\n\n                .IsLowerThan(_entity.ListNotEmpty, 0, \"List\", \"Custom message here\")\n                .IsLowerThan(_entity.ListNotEmpty, 1, \"List\", \"Custom message here\")\n                .IsLowerThan(_entity.ListNotEmpty, 2, \"List\", \"Custom message here\")\n                .IsLowerThan(_entity.ListNotEmpty, 3, \"List\", \"Custom message here\")\n                .IsLowerThan(_entity.ListNotEmpty, 4, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 8);\n        }\n\n        [TestCategory(\"List Validation\")]\n        [TestMethod(\"Requires a list count is lower or equals than\")]\n        public void RequiresIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 0, \"List\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 1, \"List\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 2, \"List\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 3, \"List\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 4, \"List\")\n\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 0, \"List\", \"Custom message here\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 1, \"List\", \"Custom message here\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 2, \"List\", \"Custom message here\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 3, \"List\", \"Custom message here\")\n                .IsLowerOrEqualsThan(_entity.ListNotEmpty, 4, \"List\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/LongValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class LongValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is greater than\")]\n        public void RequiresLongIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan((long)0, (int)10, \"Long\")\n                .IsGreaterThan((long)0, (int)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)10, (int)10, \"Long\")\n                .IsGreaterThan((long)10, (int)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)20, (int)10, \"Long\")\n                .IsGreaterThan((long)20, (int)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterThan((long)0, (float)10, \"Long\")\n                .IsGreaterThan((long)0, (float)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)10, (float)10, \"Long\")\n                .IsGreaterThan((long)10, (float)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)20, (float)10, \"Long\")\n                .IsGreaterThan((long)20, (float)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterThan((long)0, (double)10, \"Long\")\n                .IsGreaterThan((long)0, (double)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)10, (double)10, \"Long\")\n                .IsGreaterThan((long)10, (double)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)20, (double)10, \"Long\")\n                .IsGreaterThan((long)20, (double)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterThan((long)0, (long)10, \"Long\")\n                .IsGreaterThan((long)0, (long)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)10, (long)10, \"Long\")\n                .IsGreaterThan((long)10, (long)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)20, (long)10, \"Long\")\n                .IsGreaterThan((long)20, (long)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterThan((long)0, (decimal)10, \"Long\")\n                .IsGreaterThan((long)0, (decimal)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)10, (decimal)10, \"Long\")\n                .IsGreaterThan((long)10, (decimal)10, \"Long\", \"Custom message here\")\n                .IsGreaterThan((long)20, (decimal)10, \"Long\")\n                .IsGreaterThan((long)20, (decimal)10, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is greater or equals than\")]\n        public void RequiresLongIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan((long)0, (int)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)0, (int)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)10, (int)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)10, (int)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)20, (int)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)20, (int)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((long)0, (float)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)0, (float)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)10, (float)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)10, (float)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)20, (float)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)20, (float)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((long)0, (double)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)0, (double)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)10, (double)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)10, (double)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)20, (double)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)20, (double)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((long)0, (long)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)0, (long)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)10, (long)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)10, (long)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)20, (long)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)20, (long)10, \"Long\", \"Custom message here\")\n\n                .IsGreaterOrEqualsThan((long)0, (decimal)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)0, (decimal)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)10, (decimal)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)10, (decimal)10, \"Long\", \"Custom message here\")\n                .IsGreaterOrEqualsThan((long)20, (decimal)10, \"Long\")\n                .IsGreaterOrEqualsThan((long)20, (decimal)10, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is lower than\")]\n        public void RequiresLongIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan((long)0, (int)0, \"Long\")\n                .IsLowerThan((long)0, (int)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)-5, (int)0, \"Long\")\n                .IsLowerThan((long)-5, (int)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)5, (int)0, \"Long\")\n                .IsLowerThan((long)5, (int)0, \"Long\", \"Custom message here\")\n\n                .IsLowerThan((long)0, (float)0, \"Long\")\n                .IsLowerThan((long)0, (float)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)-5, (float)0, \"Long\")\n                .IsLowerThan((long)-5, (float)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)5, (float)0, \"Long\")\n                .IsLowerThan((long)5, (float)0, \"Long\", \"Custom message here\")\n\n                .IsLowerThan((long)0, (double)0, \"Long\")\n                .IsLowerThan((long)0, (double)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)-5, (double)0, \"Long\")\n                .IsLowerThan((long)-5, (double)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)5, (double)0, \"Long\")\n                .IsLowerThan((long)5, (double)0, \"Long\", \"Custom message here\")\n\n                .IsLowerThan((long)0, (long)0, \"Long\")\n                .IsLowerThan((long)0, (long)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)-5, (long)0, \"Long\")\n                .IsLowerThan((long)-5, (long)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)5, (long)0, \"Long\")\n                .IsLowerThan((long)5, (long)0, \"Long\", \"Custom message here\")\n\n                .IsLowerThan((long)0, (decimal)0, \"Long\")\n                .IsLowerThan((long)0, (decimal)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)-5, (decimal)0, \"Long\")\n                .IsLowerThan((long)-5, (decimal)0, \"Long\", \"Custom message here\")\n                .IsLowerThan((long)5, (decimal)0, \"Long\")\n                .IsLowerThan((long)5, (decimal)0, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is lower or equals than\")]\n        public void RequiresLongIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan((long)0, (int)10, \"Long\")\n                .IsLowerOrEqualsThan((long)0, (int)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)10, (int)10, \"Long\")\n                .IsLowerOrEqualsThan((long)10, (int)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)20, (int)10, \"Long\")\n                .IsLowerOrEqualsThan((long)20, (int)10, \"Long\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((long)0, (float)10, \"Long\")\n                .IsLowerOrEqualsThan((long)0, (float)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)10, (float)10, \"Long\")\n                .IsLowerOrEqualsThan((long)10, (float)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)20, (float)10, \"Long\")\n                .IsLowerOrEqualsThan((long)20, (float)10, \"Long\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((long)0, (double)10, \"Long\")\n                .IsLowerOrEqualsThan((long)0, (double)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)10, (double)10, \"Long\")\n                .IsLowerOrEqualsThan((long)10, (double)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)20, (double)10, \"Long\")\n                .IsLowerOrEqualsThan((long)20, (double)10, \"Long\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((long)0, (long)10, \"Long\")\n                .IsLowerOrEqualsThan((long)0, (long)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)10, (long)10, \"Long\")\n                .IsLowerOrEqualsThan((long)10, (long)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)20, (long)10, \"Long\")\n                .IsLowerOrEqualsThan((long)20, (long)10, \"Long\", \"Custom message here\")\n\n                .IsLowerOrEqualsThan((long)0, (decimal)10, \"Long\")\n                .IsLowerOrEqualsThan((long)0, (decimal)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)10, (decimal)10, \"Long\")\n                .IsLowerOrEqualsThan((long)10, (decimal)10, \"Long\", \"Custom message here\")\n                .IsLowerOrEqualsThan((long)20, (decimal)10, \"Long\")\n                .IsLowerOrEqualsThan((long)20, (decimal)10, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long has its min value\")]\n        public void RequireLongHasItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(long.MaxValue, \"Long\")\n                .IsMinValue(long.MaxValue, \"Long\", \"Custom message here\")\n                .IsMinValue(long.MinValue, \"Long\")\n                .IsMinValue(long.MinValue, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long has not its min value\")]\n        public void RequireLongHasNotItsMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(long.MaxValue, \"Long\")\n                .IsNotMinValue(long.MaxValue, \"Long\", \"Custom message here\")\n                .IsNotMinValue(long.MinValue, \"Long\")\n                .IsNotMinValue(long.MinValue, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long has its max value\")]\n        public void RequireLongHasItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(long.MaxValue, \"Long\")\n                .IsMaxValue(long.MaxValue, \"Long\", \"Custom message here\")\n                .IsMaxValue(long.MinValue, \"Long\")\n                .IsMaxValue(long.MinValue, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long has not its max value\")]\n        public void RequireLongHasNotItsMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(long.MaxValue, \"Long\")\n                .IsNotMaxValue(long.MaxValue, \"Long\", \"Custom message here\")\n                .IsNotMaxValue(long.MinValue, \"Long\")\n                .IsNotMaxValue(long.MinValue, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires two longs are equals\")]\n        public void RequireTwoLongsAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals((long)0, (int)0, \"Long\")\n                .AreEquals((long)0, (int)0, \"Long\", \"Custom message here\")\n                .AreEquals((long)0, (int)10, \"Long\")\n                .AreEquals((long)0, (int)10, \"Long\", \"Custom message here\")\n\n                .AreEquals((long)0, (float)0, \"Long\")\n                .AreEquals((long)0, (float)0, \"Long\", \"Custom message here\")\n                .AreEquals((long)0, (float)10, \"Long\")\n                .AreEquals((long)0, (float)10, \"Long\", \"Custom message here\")\n\n                .AreEquals((long)0, (double)0, \"Long\")\n                .AreEquals((long)0, (double)0, \"Long\", \"Custom message here\")\n                .AreEquals((long)0, (double)10, \"Long\")\n                .AreEquals((long)0, (double)10, \"Long\", \"Custom message here\")\n\n                .AreEquals((long)0, (long)0, \"Long\")\n                .AreEquals((long)0, (long)0, \"Long\", \"Custom message here\")\n                .AreEquals((long)0, (long)10, \"Long\")\n                .AreEquals((long)0, (long)10, \"Long\", \"Custom message here\")\n\n                .AreEquals((long)0, (decimal)0, \"Long\")\n                .AreEquals((long)0, (decimal)0, \"Long\", \"Custom message here\")\n                .AreEquals((long)0, (decimal)10, \"Long\")\n                .AreEquals((long)0, (decimal)10, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires two longs are not equals\")]\n        public void RequireTwoLongsAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals((long)0, (int)0, \"Long\")\n                .AreNotEquals((long)0, (int)0, \"Long\", \"Custom message here\")\n                .AreNotEquals((long)0, (int)10, \"Long\")\n                .AreNotEquals((long)0, (int)10, \"Long\", \"Custom message here\")\n\n                .AreNotEquals((long)0, (float)0, \"Long\")\n                .AreNotEquals((long)0, (float)0, \"Long\", \"Custom message here\")\n                .AreNotEquals((long)0, (float)10, \"Long\")\n                .AreNotEquals((long)0, (float)10, \"Long\", \"Custom message here\")\n\n                .AreNotEquals((long)0, (double)0, \"Long\")\n                .AreNotEquals((long)0, (double)0, \"Long\", \"Custom message here\")\n                .AreNotEquals((long)0, (double)10, \"Long\")\n                .AreNotEquals((long)0, (double)10, \"Long\", \"Custom message here\")\n\n                .AreNotEquals((long)0, (long)0, \"Long\")\n                .AreNotEquals((long)0, (long)0, \"Long\", \"Custom message here\")\n                .AreNotEquals((long)0, (long)10, \"Long\")\n                .AreNotEquals((long)0, (long)10, \"Long\", \"Custom message here\")\n\n                .AreNotEquals((long)0, (decimal)0, \"Long\")\n                .AreNotEquals((long)0, (decimal)0, \"Long\", \"Custom message here\")\n                .AreNotEquals((long)0, (decimal)10, \"Long\")\n                .AreNotEquals((long)0, (decimal)10, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is null\")]\n        public void RequiresLongIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.LongNull, \"Long\")\n                .IsNull(_entity.LongNull, \"Long\", \"Custom message here\")\n                .IsNull(_entity.LongStart, \"Long\")\n                .IsNull(_entity.LongStart, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is not null\")]\n        public void RequiresLongIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.LongNull, \"Long\")\n                .IsNotNull(_entity.LongNull, \"Long\", \"Custom message here\")\n                .IsNotNull(_entity.LongStart, \"Long\")\n                .IsNotNull(_entity.LongStart, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is between\")]\n        public void RequiresLongIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.LongBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongStart, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongStart, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsBetween(_entity.LongBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongStart, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongStart, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsBetween(_entity.LongBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongStart, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongStart, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsBetween(_entity.LongBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongStart, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongStart, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsBetween(_entity.LongBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongStart, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongStart, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongEnd, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongEnd, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsBetween(_entity.LongNotBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a long is not between\")]\n        public void RequiresLongIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongStart, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongStart, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (int)_entity.LongStart, (int)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongStart, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongStart, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (double)_entity.LongStart, (double)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongStart, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongStart, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (float)_entity.LongStart, (float)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongStart, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongStart, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, (long)_entity.LongStart, (long)_entity.LongEnd, \"Long\", \"Custom message here\")\n\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongStart, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongStart, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongEnd, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongEnd, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\")\n                .IsNotBetween(_entity.LongNotBetweenStartAndEnd, _entity.LongStart, _entity.LongEnd, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 30);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a list contains a long\")]\n        public void RequiresListContainsLong()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains((long)1, _entity.LongList, \"Long\")\n                .Contains((long)1, _entity.LongList, \"Long\", \"Custom message here\")\n                .Contains((long)3, _entity.LongList, \"Long\")\n                .Contains((long)3, _entity.LongList, \"Long\", \"Custom message here\")\n                .Contains((long)5, _entity.LongList, \"Long\")\n                .Contains((long)5, _entity.LongList, \"Long\", \"Custom message here\")\n                .Contains((long)7, _entity.LongList, \"Long\")\n                .Contains((long)7, _entity.LongList, \"Long\", \"Custom message here\")\n                .Contains((long)9, _entity.LongList, \"Long\")\n                .Contains((long)9, _entity.LongList, \"Long\", \"Custom message here\")\n                .Contains((long)11, _entity.LongList, \"Long\")\n                .Contains((long)11, _entity.LongList, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Long Validation\")]\n        [TestMethod(\"Requires a list does not contains a long\")]\n        public void RequiresListNotContainsDouble()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains((long)1, _entity.LongList, \"Long\")\n                .NotContains((long)1, _entity.LongList, \"Long\", \"Custom message here\")\n                .NotContains((long)3, _entity.LongList, \"Long\")\n                .NotContains((long)3, _entity.LongList, \"Long\", \"Custom message here\")\n                .NotContains((long)5, _entity.LongList, \"Long\")\n                .NotContains((long)5, _entity.LongList, \"Long\", \"Custom message here\")\n                .NotContains((long)7, _entity.LongList, \"Long\")\n                .NotContains((long)7, _entity.LongList, \"Long\", \"Custom message here\")\n                .NotContains((long)9, _entity.LongList, \"Long\")\n                .NotContains((long)9, _entity.LongList, \"Long\", \"Custom message here\")\n                .NotContains((long)11, _entity.LongList, \"Long\")\n                .NotContains((long)11, _entity.LongList, \"Long\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/ObjectValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class ObjectValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"Object Validation\")]\n        [TestMethod(\"Requires an object is null\")]\n        public void IsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(_entity.ObjectNull, \"Object\")\n                .IsNull(_entity.ObjectNull, \"Object\", \"Custom error message\")\n\n                .IsNull(_entity.ObjectToCompare, \"Object\")\n                .IsNull(_entity.ObjectToCompare, \"Object\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Object Validation\")]\n        [TestMethod(\"Requires an object is not null\")]\n        public void IsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(_entity.ObjectNull, \"Object\")\n                .IsNotNull(_entity.ObjectNull, \"Object\", \"Custom error message\")\n\n                .IsNotNull(_entity.ObjectToCompare, \"Object\")\n                .IsNotNull(_entity.ObjectToCompare, \"Object\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Object Validation\")]\n        [TestMethod(\"Requires two objects are equals\")]\n        public void AreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals(_entity.ObjectNull, _entity.ObjectToCompare, \"Object\")\n                .AreEquals(_entity.ObjectNull, _entity.ObjectToCompare, \"Object\", \"Custom error message\")\n\n                .AreEquals(_entity.ObjectToCompare, _entity.ObjectAnotherToCompare, \"Object\")\n                .AreEquals(_entity.ObjectToCompare, _entity.ObjectAnotherToCompare, \"Object\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Object Validation\")]\n        [TestMethod(\"Requires two objects are not equals\")]\n        public void AreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals(_entity.ObjectNull, _entity.ObjectToCompare, \"Object\")\n                .AreNotEquals(_entity.ObjectNull, _entity.ObjectToCompare, \"Object\", \"Custom error message\")\n\n                .AreNotEquals(_entity.ObjectToCompare, _entity.ObjectAnotherToCompare, \"Object\")\n                .AreNotEquals(_entity.ObjectToCompare, _entity.ObjectAnotherToCompare, \"Object\", \"Custom error message\");\n\n            Assert.AreEqual(true, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 0);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/RegexValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class RegexValidationTests\n    {\n        [TestCategory(\"Regex Validation\")]\n        [TestMethod(\"Requires a string matches a pattern\")]\n        public void Matches()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                // Invalid\n                .Matches(\"ABC012345\", @\"[^0-9]+\", \"Regex\")\n                .Matches(\"ABC012345\", @\"[^0-9]+\", \"Regex\", \"Custom error message\")\n\n                // VALID\n                .Matches(\"012345\", @\"[^0-9]+\", \"Regex\")\n                .Matches(\"012345\", @\"[^0-9]+\", \"Regex\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"Regex Validation\")]\n        [TestMethod(\"Requires a string not matches a pattern\")]\n        public void NotMatches()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                // VALID\n                .NotMatches(\"ABC012345\", @\"[^0-9]+\", \"Regex\")\n                .NotMatches(\"ABC012345\", @\"[^0-9]+\", \"Regex\", \"Custom error message\")\n\n                // INVALID\n                .NotMatches(\"012345\", @\"[^0-9]+\", \"Regex\")\n                .NotMatches(\"012345\", @\"[^0-9]+\", \"Regex\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/StringValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class StringValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string is null\")]\n        public void IsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNull(_entity.StringEmpty, \"String\")\n                .IsNull(_entity.StringEmpty, \"String\", \"Custom error message\")\n\n                .IsNull(_entity.StringNotEmpty, \"String\")\n                .IsNull(_entity.StringNotEmpty, \"String\", \"Custom error message\")\n\n                .IsNull(_entity.StringNull, \"String\")\n                .IsNull(_entity.StringNull, \"String\", \"Custom error message\")\n\n                .IsNull(_entity.StringWhiteSpace, \"String\")\n                .IsNull(_entity.StringWhiteSpace, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string is not null\")]\n        public void IsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNotNull(_entity.StringEmpty, \"String\")\n                .IsNotNull(_entity.StringEmpty, \"String\", \"Custom error message\")\n\n                .IsNotNull(_entity.StringNotEmpty, \"String\")\n                .IsNotNull(_entity.StringNotEmpty, \"String\", \"Custom error message\")\n\n                .IsNotNull(_entity.StringNull, \"String\")\n                .IsNotNull(_entity.StringNull, \"String\", \"Custom error message\")\n\n                .IsNotNull(_entity.StringWhiteSpace, \"String\")\n                .IsNotNull(_entity.StringWhiteSpace, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string is null or empty\")]\n        public void IsNullOrEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNullOrEmpty(_entity.StringEmpty, \"String\")\n                .IsNullOrEmpty(_entity.StringEmpty, \"String\", \"Custom error message\")\n\n                .IsNullOrEmpty(_entity.StringNotEmpty, \"String\")\n                .IsNullOrEmpty(_entity.StringNotEmpty, \"String\", \"Custom error message\")\n\n                .IsNullOrEmpty(_entity.StringNull, \"String\")\n                .IsNullOrEmpty(_entity.StringNull, \"String\", \"Custom error message\")\n\n                .IsNullOrEmpty(_entity.StringWhiteSpace, \"String\")\n                .IsNullOrEmpty(_entity.StringWhiteSpace, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string is not null or empty\")]\n        public void IsNotNullOrEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNotNullOrEmpty(_entity.StringEmpty, \"String\")\n                .IsNotNullOrEmpty(_entity.StringEmpty, \"String\", \"Custom error message\")\n\n                .IsNotNullOrEmpty(_entity.StringNotEmpty, \"String\")\n                .IsNotNullOrEmpty(_entity.StringNotEmpty, \"String\", \"Custom error message\")\n\n                .IsNotNullOrEmpty(_entity.StringNull, \"String\")\n                .IsNotNullOrEmpty(_entity.StringNull, \"String\", \"Custom error message\")\n\n                .IsNotNullOrEmpty(_entity.StringWhiteSpace, \"String\")\n                .IsNotNullOrEmpty(_entity.StringWhiteSpace, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string is null or white space\")]\n        public void IsNullOrWhiteSpace()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNullOrWhiteSpace(_entity.StringEmpty, \"String\")\n                .IsNullOrWhiteSpace(_entity.StringEmpty, \"String\", \"Custom error message\")\n\n                .IsNullOrWhiteSpace(_entity.StringNotEmpty, \"String\")\n                .IsNullOrWhiteSpace(_entity.StringNotEmpty, \"String\", \"Custom error message\")\n\n                .IsNullOrWhiteSpace(_entity.StringNull, \"String\")\n                .IsNullOrWhiteSpace(_entity.StringNull, \"String\", \"Custom error message\")\n\n                .IsNullOrWhiteSpace(_entity.StringWhiteSpace, \"String\")\n                .IsNullOrWhiteSpace(_entity.StringWhiteSpace, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string is not null or white space\")]\n        public void IsNotNullOrWhiteSpace()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNotNullOrWhiteSpace(_entity.StringEmpty, \"String\")\n                .IsNotNullOrWhiteSpace(_entity.StringEmpty, \"String\", \"Custom error message\")\n\n                .IsNotNullOrWhiteSpace(_entity.StringNotEmpty, \"String\")\n                .IsNotNullOrWhiteSpace(_entity.StringNotEmpty, \"String\", \"Custom error message\")\n\n                .IsNotNullOrWhiteSpace(_entity.StringNull, \"String\")\n                .IsNotNullOrWhiteSpace(_entity.StringNull, \"String\", \"Custom error message\")\n\n                .IsNotNullOrWhiteSpace(_entity.StringWhiteSpace, \"String\")\n                .IsNotNullOrWhiteSpace(_entity.StringWhiteSpace, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires two strings are equals\")]\n        public void AreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .AreEquals(_entity.StringEmpty, string.Empty, \"String\")\n                .AreEquals(_entity.StringEmpty, string.Empty, \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringNotEmpty, \"RandomString\", \"String\")\n                .AreEquals(_entity.StringNotEmpty, \"RandomString\", \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringNull, null, \"String\")\n                .AreEquals(_entity.StringNull, null, \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringWhiteSpace, \" \", \"String\")\n                .AreEquals(_entity.StringWhiteSpace, \" \", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires two strings are not equals\")]\n        public void AreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .AreNotEquals(_entity.StringEmpty, string.Empty, \"String\")\n                .AreNotEquals(_entity.StringEmpty, string.Empty, \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringNotEmpty, \"RandomString\", \"String\")\n                .AreNotEquals(_entity.StringNotEmpty, \"RandomString\", \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringNull, null, \"String\")\n                .AreNotEquals(_entity.StringNull, null, \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringWhiteSpace, \" \", \"String\")\n                .AreNotEquals(_entity.StringWhiteSpace, \" \", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string contains a value\")]\n        public void Contains()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .Contains(_entity.StringEmpty, \"value\", \"String\")\n                .Contains(_entity.StringEmpty, \"value\", \"String\", \"Custom error message\")\n\n                .Contains(_entity.StringNotEmpty, \"value\", \"String\")\n                .Contains(_entity.StringNotEmpty, \"value\", \"String\", \"Custom error message\")\n\n                .Contains(_entity.StringNull, \"value\", \"String\")\n                .Contains(_entity.StringNull, \"value\", \"String\", \"Custom error message\")\n\n                .Contains(_entity.StringWhiteSpace, \"value\", \"String\")\n                .Contains(_entity.StringWhiteSpace, \"value\", \"String\", \"Custom error message\")\n\n                .Contains(_entity.StringNotEmpty, \"some\", \"String\")\n                .Contains(_entity.StringNotEmpty, \"some\", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 8);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string not contains a value\")]\n        public void NotContains()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .NotContains(_entity.StringEmpty, \"value\", \"String\")\n                .NotContains(_entity.StringEmpty, \"value\", \"String\", \"Custom error message\")\n\n                .NotContains(_entity.StringNotEmpty, \"value\", \"String\")\n                .NotContains(_entity.StringNotEmpty, \"value\", \"String\", \"Custom error message\")\n\n                .NotContains(_entity.StringNull, \"value\", \"String\")\n                .NotContains(_entity.StringNull, \"value\", \"String\", \"Custom error message\")\n\n                .NotContains(_entity.StringWhiteSpace, \"value\", \"String\")\n                .NotContains(_entity.StringWhiteSpace, \"value\", \"String\", \"Custom error message\")\n\n                .NotContains(_entity.StringNotEmpty, \"some\", \"String\")\n                .NotContains(_entity.StringNotEmpty, \"some\", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string len is greater than\")]\n        public void IsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsGreaterThan(_entity.StringEmpty, 5, \"String\")\n                .IsGreaterThan(_entity.StringEmpty, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterThan(_entity.StringFiveCharsLong, 5, \"String\")\n                .IsGreaterThan(_entity.StringFiveCharsLong, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterThan(_entity.StringNull, 5, \"String\")\n                .IsGreaterThan(_entity.StringNull, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterThan(_entity.StringWhiteSpace, 5, \"String\")\n                .IsGreaterThan(_entity.StringWhiteSpace, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterThan(_entity.StringNotEmpty, 3, \"String\")\n                .IsGreaterThan(_entity.StringNotEmpty, 3, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string len is greater or equals than\")]\n        public void IsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsGreaterOrEqualsThan(_entity.StringEmpty, 5, \"String\")\n                .IsGreaterOrEqualsThan(_entity.StringEmpty, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterOrEqualsThan(_entity.StringFiveCharsLong, 5, \"String\")\n                .IsGreaterOrEqualsThan(_entity.StringFiveCharsLong, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterOrEqualsThan(_entity.StringNull, 5, \"String\")\n                .IsGreaterOrEqualsThan(_entity.StringNull, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterOrEqualsThan(_entity.StringWhiteSpace, 5, \"String\")\n                .IsGreaterOrEqualsThan(_entity.StringWhiteSpace, 5, \"String\", \"Custom error message\")\n\n                .IsGreaterOrEqualsThan(_entity.StringNotEmpty, 3, \"String\")\n                .IsGreaterOrEqualsThan(_entity.StringNotEmpty, 3, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string len is lower than\")]\n        public void IsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsLowerThan(_entity.StringEmpty, 5, \"String\")\n                .IsLowerThan(_entity.StringEmpty, 5, \"String\", \"Custom error message\")\n\n                .IsLowerThan(_entity.StringFiveCharsLong, 5, \"String\")\n                .IsLowerThan(_entity.StringFiveCharsLong, 5, \"String\", \"Custom error message\")\n\n                .IsLowerThan(_entity.StringNull, 5, \"String\")\n                .IsLowerThan(_entity.StringNull, 5, \"String\", \"Custom error message\")\n\n                .IsLowerThan(_entity.StringWhiteSpace, 5, \"String\")\n                .IsLowerThan(_entity.StringWhiteSpace, 5, \"String\", \"Custom error message\")\n\n                .IsLowerThan(_entity.StringNotEmpty, 3, \"String\")\n                .IsLowerThan(_entity.StringNotEmpty, 3, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 4);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string len is lower or equals than\")]\n        public void IsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsLowerOrEqualsThan(_entity.StringEmpty, 5, \"String\")\n                .IsLowerOrEqualsThan(_entity.StringEmpty, 5, \"String\", \"Custom error message\")\n\n                .IsLowerOrEqualsThan(_entity.StringFiveCharsLong, 5, \"String\")\n                .IsLowerOrEqualsThan(_entity.StringFiveCharsLong, 5, \"String\", \"Custom error message\")\n\n                .IsLowerOrEqualsThan(_entity.StringNull, 5, \"String\")\n                .IsLowerOrEqualsThan(_entity.StringNull, 5, \"String\", \"Custom error message\")\n\n                .IsLowerOrEqualsThan(_entity.StringWhiteSpace, 5, \"String\")\n                .IsLowerOrEqualsThan(_entity.StringWhiteSpace, 5, \"String\", \"Custom error message\")\n\n                .IsLowerOrEqualsThan(_entity.StringNotEmpty, 3, \"String\")\n                .IsLowerOrEqualsThan(_entity.StringNotEmpty, 3, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string have a specific len\")]\n        public void AreEqualsLen()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .AreEquals(_entity.StringEmpty, 5, \"String\")\n                .AreEquals(_entity.StringEmpty, 5, \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringFiveCharsLong, 5, \"String\")\n                .AreEquals(_entity.StringFiveCharsLong, 5, \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringNull, 5, \"String\")\n                .AreEquals(_entity.StringNull, 5, \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringWhiteSpace, 5, \"String\")\n                .AreEquals(_entity.StringWhiteSpace, 5, \"String\", \"Custom error message\")\n\n                .AreEquals(_entity.StringNotEmpty, 3, \"String\")\n                .AreEquals(_entity.StringNotEmpty, 3, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 6);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"Requires a string do not have a specific len\")]\n        public void AreNotEqualsLen()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .AreNotEquals(_entity.StringEmpty, 5, \"String\")\n                .AreNotEquals(_entity.StringEmpty, 5, \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringFiveCharsLong, 5, \"String\")\n                .AreNotEquals(_entity.StringFiveCharsLong, 5, \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringNull, 5, \"String\")\n                .AreNotEquals(_entity.StringNull, 5, \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringWhiteSpace, 5, \"String\")\n                .AreNotEquals(_entity.StringWhiteSpace, 5, \"String\", \"Custom error message\")\n\n                .AreNotEquals(_entity.StringNotEmpty, 3, \"String\")\n                .AreNotEquals(_entity.StringNotEmpty, 3, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"String Validation\")]\n        [TestMethod(\"requires string len to be in a range\")]\n        public void IsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsBetween(_entity.StringEmpty, 5, 10, \"String\", \"Custom error message\")\n                \n                .IsBetween(_entity.StringFiveCharsLong, 6, 10, \"String\", \"Custom error message\")\n                \n                .IsBetween(_entity.StringNull, 5, 10, \"String\", \"Custom error message\")\n                \n                .IsBetween(_entity.StringWhiteSpace, 5, 10, \"String\", \"Custom error message\")\n                \n                .IsBetween(_entity.StringNotEmpty, 3, 10, \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/TimeSpanValidationTests.cs",
    "content": "﻿using System;\nusing Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class TimeSpanValidationTests\n    {\n        private readonly SampleEntity _entity = new SampleEntity();\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is greater than\")]\n        public void RequiresDateIsGreaterThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\")\n                .IsGreaterThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\", \"Custom message here\")\n                .IsGreaterThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\")\n                .IsGreaterThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is greater or equals than\")]\n        public void RequiresDateIsGreaterOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsGreaterOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterOrEqualsThanNow, \"TimeSpan\")\n                .IsGreaterOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterOrEqualsThanNow, \"TimeSpan\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\")\n                .IsGreaterOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\", \"Custom message here\")\n                .IsGreaterOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\")\n                .IsGreaterOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is lower than\")]\n        public void RequiresDateIsLowerThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\")\n                .IsLowerThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\", \"Custom message here\")\n                .IsLowerThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\")\n                .IsLowerThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is lower or equals than\")]\n        public void RequiresDateIsLowerOrEqualsThan()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsLowerOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerOrEqualsThanNow, \"TimeSpan\")\n                .IsLowerOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerOrEqualsThanNow, \"TimeSpan\", \"Custom message here\")\n                .IsLowerOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\")\n                .IsLowerOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanLowerThanNow, \"TimeSpan\", \"Custom message here\")\n                .IsLowerOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\")\n                .IsLowerOrEqualsThan(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanGreaterThanNow, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is not null\")]\n        public void RequiresDateIsNotNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotNull(SampleEntity.TimeSpanSnapshot, \"TimeSpan\")\n                .IsNotNull(SampleEntity.TimeSpanSnapshot, \"TimeSpan\", \"Custom message here\")\n                .IsNotNull(_entity.TimeSpanNull, \"TimeSpan\")\n                .IsNotNull(_entity.TimeSpanNull, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is null\")]\n        public void RequiresDateIsNull()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNull(SampleEntity.TimeSpanSnapshot, \"TimeSpan\")\n                .IsNull(SampleEntity.TimeSpanSnapshot, \"TimeSpan\", \"Custom message here\")\n                .IsNull(_entity.TimeSpanNull, \"TimeSpan\")\n                .IsNull(_entity.TimeSpanNull, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is between\")]\n        public void RequiresDateIsBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsBetween(_entity.TimeSpanBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n                .IsBetween(_entity.TimeSpanBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\", \"Custom message here\")\n\n                // TimeSpan = StartDate will be consider between\n                .IsBetween(_entity.TimeSpanStartDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n\n                // TimeSpan = EndDate will be consider between\n                .IsBetween(_entity.TimeSpanEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n\n                .IsBetween(_entity.TimeSpanNotBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n                .IsBetween(_entity.TimeSpanNotBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is not between\")]\n        public void RequiresDateIsNotBetween()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotBetween(_entity.TimeSpanNotBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n                .IsNotBetween(_entity.TimeSpanNotBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\", \"Custom message here\")\n\n                // TimeSpan = StartDate will be consider not between\n                .IsBetween(_entity.TimeSpanStartDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n\n                // TimeSpan = EndDate will be consider not between\n                .IsBetween(_entity.TimeSpanEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n\n                .IsNotBetween(_entity.TimeSpanBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n                .IsNotBetween(_entity.TimeSpanBetweenStartAndEndDate, _entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is min value\")]\n        public void RequiresDateHaveMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMinValue(TimeSpan.MaxValue, \"TimeSpan\")\n                .IsMinValue(TimeSpan.MaxValue, \"TimeSpan\", \"Custom message here\")\n                .IsMinValue(TimeSpan.MinValue, \"TimeSpan\")\n                .IsMinValue(TimeSpan.MinValue, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is not min value\")]\n        public void RequiresDateDoNotHaveMinValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMinValue(TimeSpan.MaxValue, \"TimeSpan\")\n                .IsNotMinValue(TimeSpan.MaxValue, \"TimeSpan\", \"Custom message here\")\n                .IsNotMinValue(TimeSpan.MinValue, \"TimeSpan\")\n                .IsNotMinValue(TimeSpan.MinValue, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is max value\")]\n        public void RequiresDateHaveMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsMaxValue(TimeSpan.MaxValue, \"TimeSpan\")\n                .IsMaxValue(TimeSpan.MaxValue, \"TimeSpan\", \"Custom message here\")\n                .IsMaxValue(TimeSpan.MinValue, \"TimeSpan\")\n                .IsMaxValue(TimeSpan.MinValue, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a date is not max value\")]\n        public void RequiresDateDoNotHaveMaxValue()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .IsNotMaxValue(TimeSpan.MaxValue, \"TimeSpan\")\n                .IsNotMaxValue(TimeSpan.MaxValue, \"TimeSpan\", \"Custom message here\")\n                .IsNotMaxValue(TimeSpan.MinValue, \"TimeSpan\")\n                .IsNotMaxValue(TimeSpan.MinValue, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires two dates are equals\")]\n        public void RequiresDatesAreEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreEquals(_entity.TimeSpanStartDate, _entity.TimeSpanStartDate, \"TimeSpan\")\n                .AreEquals(_entity.TimeSpanStartDate, _entity.TimeSpanStartDate, \"TimeSpan\", \"Custom message here\")\n                .AreEquals(_entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n                .AreEquals(_entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires two dates are not equals\")]\n        public void RequiresDatesAreNotEquals()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .AreNotEquals(_entity.TimeSpanStartDate, _entity.TimeSpanStartDate, \"TimeSpan\")\n                .AreNotEquals(_entity.TimeSpanStartDate, _entity.TimeSpanStartDate, \"TimeSpan\", \"Custom message here\")\n                .AreNotEquals(_entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\")\n                .AreNotEquals(_entity.TimeSpanStartDate, _entity.TimeSpanEndDate, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a list contains a date\")]\n        public void RequiresListContainsDate()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .Contains(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanList, \"TimeSpan\")\n                .Contains(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanList, \"TimeSpan\", \"Custom message here\")\n                .Contains(_entity.TimeSpanEndDate, _entity.TimeSpanList, \"TimeSpan\")\n                .Contains(_entity.TimeSpanEndDate, _entity.TimeSpanList, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n\n        [TestCategory(\"TimeSpan Validation\")]\n        [TestMethod(\"Requires a list not contains a date\")]\n        public void RequiresListNotContainsDate()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n                .NotContains(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanList, \"TimeSpan\")\n                .NotContains(SampleEntity.TimeSpanSnapshot, _entity.TimeSpanList, \"TimeSpan\", \"Custom message here\")\n                .NotContains(_entity.TimeSpanEndDate, _entity.TimeSpanList, \"TimeSpan\")\n                .NotContains(_entity.TimeSpanEndDate, _entity.TimeSpanList, \"TimeSpan\", \"Custom message here\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 2);\n        }\n    }\n}\n"
  },
  {
    "path": "Flunt.Tests/UrlValidationTests.cs",
    "content": "﻿using Flunt.Tests.Entities;\nusing Flunt.Validations;\nusing Microsoft.VisualStudio.TestTools.UnitTesting;\n\nnamespace Flunt.Tests\n{\n    [TestClass]\n    public class UrlValidationTests\n    {\n        [TestCategory(\"URL Validation\")]\n        [TestMethod(\"Requires a string is an URL\")]\n        public void IsUrl()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsUrl(\"http://balta.io\", \"String\")\n                .IsUrl(\"http://balta.io\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"https://balta.io\", \"String\")\n                .IsUrl(\"https://balta.io\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"balta.io\", \"String\")\n                .IsUrl(\"balta.io\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"none\", \"String\")\n                .IsUrl(\"none\", \"String\", \"Custom error message\")\n\n                .IsUrl(null, \"String\")\n                .IsUrl(null, \"String\", \"Custom error message\")\n\n                .IsUrl(string.Empty, \"String\")\n                .IsUrl(string.Empty, \"String\", \"Custom error message\")\n\n                .IsUrl(\" \", \"String\")\n                .IsUrl(\" \", \"String\", \"Custom error message\")\n\n                .IsUrl(\"http://localhost:1000\", \"String\")\n                .IsUrl(\"http://localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"localhost:1000\", \"String\")\n                .IsUrl(\"localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"https://127.0.0.1:10000\", \"String\")\n                .IsUrl(\"https://127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"127.0.0.1:10000\", \"String\")\n                .IsUrl(\"127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"https://127.0.256.1:10000\", \"String\")\n                .IsUrl(\"https://127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"127.0.256.1:10000\", \"String\")\n                .IsUrl(\"127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsUrl(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\")\n\n                .IsUrl(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsUrl(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 20);\n        }\n\n        [TestCategory(\"URL Validation\")]\n        [TestMethod(\"Requires a string is an URL or is empty\")]\n        public void IsUrlOrEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsUrlOrEmpty(\"http://balta.io\", \"String\")\n                .IsUrlOrEmpty(\"http://balta.io\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"https://balta.io\", \"String\")\n                .IsUrlOrEmpty(\"https://balta.io\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"balta.io\", \"String\")\n                .IsUrlOrEmpty(\"balta.io\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"none\", \"String\")\n                .IsUrlOrEmpty(\"none\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(null, \"String\")\n                .IsUrlOrEmpty(null, \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(string.Empty, \"String\")\n                .IsUrlOrEmpty(string.Empty, \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\" \", \"String\")\n                .IsUrlOrEmpty(\" \", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"http://localhost:1000\", \"String\")\n                .IsUrlOrEmpty(\"http://localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"localhost:1000\", \"String\")\n                .IsUrlOrEmpty(\"localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"https://127.0.0.1:10000\", \"String\")\n                .IsUrlOrEmpty(\"https://127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"127.0.0.1:10000\", \"String\")\n                .IsUrlOrEmpty(\"127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"https://127.0.256.1:10000\", \"String\")\n                .IsUrlOrEmpty(\"https://127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"127.0.256.1:10000\", \"String\")\n                .IsUrlOrEmpty(\"127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsUrlOrEmpty(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\")\n\n                .IsUrlOrEmpty(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsUrlOrEmpty(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 16);\n        }\n\n        [TestCategory(\"URL Validation\")]\n        [TestMethod(\"Requires a string is not an URL\")]\n        public void IsNotUrl()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNotUrl(\"http://balta.io\", \"String\")\n                .IsNotUrl(\"http://balta.io\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"https://balta.io\", \"String\")\n                .IsNotUrl(\"https://balta.io\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"balta.io\", \"String\")\n                .IsNotUrl(\"balta.io\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"none\", \"String\")\n                .IsNotUrl(\"none\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(null, \"String\")\n                .IsNotUrl(null, \"String\", \"Custom error message\")\n\n                .IsNotUrl(string.Empty, \"String\")\n                .IsNotUrl(string.Empty, \"String\", \"Custom error message\")\n\n                .IsNotUrl(\" \", \"String\")\n                .IsNotUrl(\" \", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"http://localhost:1000\", \"String\")\n                .IsNotUrl(\"http://localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"localhost:1000\", \"String\")\n                .IsNotUrl(\"localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"https://127.0.0.1:10000\", \"String\")\n                .IsNotUrl(\"https://127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"127.0.0.1:10000\", \"String\")\n                .IsNotUrl(\"127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"https://127.0.256.1:10000\", \"String\")\n                .IsNotUrl(\"https://127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"127.0.256.1:10000\", \"String\")\n                .IsNotUrl(\"127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsNotUrl(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\")\n\n                .IsNotUrl(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsNotUrl(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n\n        [TestCategory(\"URL Validation\")]\n        [TestMethod(\"Requires a string is not an URL or is empty\")]\n        public void IsNotUrlOrEmpty()\n        {\n            var contract = new Contract<SampleEntity>()\n                .Requires()\n\n                .IsNotUrlOrEmpty(\"http://balta.io\", \"String\")\n                .IsNotUrlOrEmpty(\"http://balta.io\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"https://balta.io\", \"String\")\n                .IsNotUrlOrEmpty(\"https://balta.io\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"balta.io\", \"String\")\n                .IsNotUrlOrEmpty(\"balta.io\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"none\", \"String\")\n                .IsNotUrlOrEmpty(\"none\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(null, \"String\")\n                .IsNotUrlOrEmpty(null, \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(string.Empty, \"String\")\n                .IsNotUrlOrEmpty(string.Empty, \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\" \", \"String\")\n                .IsNotUrlOrEmpty(\" \", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"http://localhost:1000\", \"String\")\n                .IsNotUrlOrEmpty(\"http://localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"localhost:1000\", \"String\")\n                .IsNotUrlOrEmpty(\"localhost:1000\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"https://127.0.0.1:10000\", \"String\")\n                .IsNotUrlOrEmpty(\"https://127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"127.0.0.1:10000\", \"String\")\n                .IsNotUrlOrEmpty(\"127.0.0.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"https://127.0.256.1:10000\", \"String\")\n                .IsNotUrlOrEmpty(\"https://127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"127.0.256.1:10000\", \"String\")\n                .IsNotUrlOrEmpty(\"127.0.256.1:10000\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsNotUrlOrEmpty(\"http://127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\")\n\n                .IsNotUrlOrEmpty(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\")\n                .IsNotUrlOrEmpty(\"127.0.0.1:10000/devstoreaccount1/publicacao-storage/7d9cd2c9-4b0d-4b29-b0a5-c6e6c5c2562b.png\", \"String\", \"Custom error message\");\n\n            Assert.AreEqual(false, contract.IsValid);\n            Assert.AreEqual(contract.Notifications.Count, 10);\n        }\n    }\n}"
  },
  {
    "path": "Flunt.sln",
    "content": "﻿\nMicrosoft Visual Studio Solution File, Format Version 12.00\n# Visual Studio Version 16\nVisualStudioVersion = 16.0.30907.101\nMinimumVisualStudioVersion = 15.0.26124.0\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"Flunt\", \"Flunt\\Flunt.csproj\", \"{8BC195E8-08FC-403B-8E67-261928C7C539}\"\nEndProject\nProject(\"{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\") = \"Flunt.Tests\", \"Flunt.Tests\\Flunt.Tests.csproj\", \"{C6AD8DB5-7A43-478C-A5F5-34673357838C}\"\nEndProject\nProject(\"{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}\") = \"Flunt.Samples\", \"Flunt.Samples\\Flunt.Samples.csproj\", \"{679D0442-90D1-409F-9947-98C402F11752}\"\nEndProject\nGlobal\n\tGlobalSection(SolutionConfigurationPlatforms) = preSolution\n\t\tDebug|Any CPU = Debug|Any CPU\n\t\tDebug|x64 = Debug|x64\n\t\tDebug|x86 = Debug|x86\n\t\tRelease|Any CPU = Release|Any CPU\n\t\tRelease|x64 = Release|x64\n\t\tRelease|x86 = Release|x86\n\tEndGlobalSection\n\tGlobalSection(ProjectConfigurationPlatforms) = postSolution\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Release|x64.Build.0 = Release|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{8BC195E8-08FC-403B-8E67-261928C7C539}.Release|x86.Build.0 = Release|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Release|x64.Build.0 = Release|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{C6AD8DB5-7A43-478C-A5F5-34673357838C}.Release|x86.Build.0 = Release|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Debug|Any CPU.ActiveCfg = Debug|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Debug|Any CPU.Build.0 = Debug|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Debug|x64.ActiveCfg = Debug|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Debug|x64.Build.0 = Debug|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Debug|x86.ActiveCfg = Debug|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Debug|x86.Build.0 = Debug|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Release|Any CPU.ActiveCfg = Release|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Release|Any CPU.Build.0 = Release|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Release|x64.ActiveCfg = Release|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Release|x64.Build.0 = Release|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Release|x86.ActiveCfg = Release|Any CPU\n\t\t{679D0442-90D1-409F-9947-98C402F11752}.Release|x86.Build.0 = Release|Any CPU\n\tEndGlobalSection\n\tGlobalSection(SolutionProperties) = preSolution\n\t\tHideSolutionNode = FALSE\n\tEndGlobalSection\n\tGlobalSection(ExtensibilityGlobals) = postSolution\n\t\tSolutionGuid = {380C6B7B-4776-4F25-B010-8B382145B48C}\n\tEndGlobalSection\nEndGlobal\n"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2021 Andre Baltieri\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# Flunt\nFlunt is a fluent way to use Notification Pattern with your entities, concentrating every change you made and easy accessing it when you need.\n\n\n| Package |  Version | Downloads |\n| ------- | ----- | ----- |\n| `Flunt` | [![NuGet](https://img.shields.io/nuget/v/Flunt.svg)](https://nuget.org/packages/Flunt) | [![Nuget](https://img.shields.io/nuget/dt/Flunt.svg)](https://nuget.org/packages/Flunt) |\n\n\n### Dependencies\n.NET Standard 2.0\n\nYou can check supported frameworks here:\n\nhttps://docs.microsoft.com/pt-br/dotnet/standard/net-standard\n\n### Instalation\nThis package is available through Nuget Packages: https://www.nuget.org/packages/Flunt\n\n\n**Nuget**\n```\nInstall-Package Flunt\n```\n\n**.NET CLI**\n```\ndotnet add package Flunt\n```\n\n## How to use\n```csharp\npublic class Customer : Notifiable<Notification>\n{\n  ...\n}\n\nvar customer = new Customer();\ncustomer.AddNotification(\"Name\", \"Invalid name\");\n\nif(customer.IsValid)\n  ...\n```\n\nJust check our [Wiki](https://github.com/andrebaltieri/Flunt/wiki) for more details and samples of how to use Flunt in your applications.\n\n## Extensions\n* [Flunt.Extensions.Br](https://github.com/andrebaltieri/Flunt.Extensions.Br)\n* [Flunt.Extensions.AspNet](https://github.com/andrebaltieri/Flunt.Extensions.AspNet)\n\n## Mods\n* [Flunt.Br](https://github.com/lira92/flunt.br)\n* [Flunt for Java](https://github.com/carlosbritojun/jflunt)\n* [Flunt for JavaScript](https://github.com/jhonesgoncal/flunt)\n* [Flunt for Python](https://github.com/Delatorrea/PyFlunt)\n* [Flunt for PHP](https://github.com/matheusbloise/flunt-php)\n\n## About the Art\nAll logo, icons, colors and fonts were provided with love by Gregory Buso\n"
  }
]