diff --git a/MathNet.Numerics.Portable.sln.DotSettings b/MathNet.Numerics.Portable.sln.DotSettings index a97eba6c..cd49821b 100644 --- a/MathNet.Numerics.Portable.sln.DotSettings +++ b/MathNet.Numerics.Portable.sln.DotSettings @@ -66,5 +66,6 @@ OTHER DEALINGS IN THE SOFTWARE. SVD TFQMR WH + True <data /> <data><IncludeFilters /><ExcludeFilters /></data> \ No newline at end of file diff --git a/Vagrantfile b/Vagrantfile index 11f013ec..1029786a 100644 --- a/Vagrantfile +++ b/Vagrantfile @@ -2,14 +2,14 @@ Vagrant.configure("2") do |config| - config.vm.box = "wheezy64-mono3.0.10-fsharp3.0.27" - config.vm.box_url = "https://dl.dropboxusercontent.com/s/uelesklqouaw1gl/wheezy64-mono3.0.10-fsharp3.0.27-virtualbox.box" + config.vm.box = "wheezy64-mono3.2.5-fsharp3.1-dev" + config.vm.box_url = "https://skydrive.live.com/redir.aspx?cid=84f3672f8cda3e91&resid=84F3672F8CDA3E91!29372&parid=84F3672F8CDA3E91!28978&authkey=!ABWHPlJFVtdF4bA" # default is only 384 MB RAM, 1 CPU in that box - we need some more config.vm.provider :virtualbox do |vb| vb.gui = false - vb.customize ["modifyvm", :id, "--memory", "1024"] - vb.customize ["modifyvm", :id, "--cpus", "2"] + vb.customize ["modifyvm", :id, "--memory", "4096"] + vb.customize ["modifyvm", :id, "--cpus", "4"] end # Shell Provisioning external: diff --git a/packages/.gitattributes b/packages/.gitattributes new file mode 100644 index 00000000..374c9471 --- /dev/null +++ b/packages/.gitattributes @@ -0,0 +1,3 @@ +repositories.config text +* -text + diff --git a/packages/FSharp.Formatting.1.0.15/FSharp.Formatting.1.0.15.nuspec b/packages/FSharp.Formatting.1.0.15/FSharp.Formatting.1.0.15.nuspec index 9a63739e..f1132e74 100644 --- a/packages/FSharp.Formatting.1.0.15/FSharp.Formatting.1.0.15.nuspec +++ b/packages/FSharp.Formatting.1.0.15/FSharp.Formatting.1.0.15.nuspec @@ -1,19 +1,19 @@ - - - - FSharp.Formatting - 1.0.15 - FSharp.Formatting - Tomas Petricek, Oleg Pestov, Anh-Dung Phan - Tomas Petricek, Oleg Pestov, Anh-Dung Phan - http://github.com/tpetricek/FSharp.Formatting/blob/master/LICENSE.md - http://github.com/tpetricek/FSharp.Formatting - https://raw.github.com/tpetricek/FSharp.Formatting/master/docs/misc/logo.png - false - Provides an F# implementation of Markdown parser and F# code formatter that can used to tokenize F# code and obtain information about tokens including tool tips with type information. The package comes with a sample that implements literate programming for F#. - Added latex support, tables and better formatting with line numbers - Copyright 2013 - - F# fsharp formatting markdown code fssnip literate programming - + + + + FSharp.Formatting + 1.0.15 + FSharp.Formatting + Tomas Petricek, Oleg Pestov, Anh-Dung Phan + Tomas Petricek, Oleg Pestov, Anh-Dung Phan + http://github.com/tpetricek/FSharp.Formatting/blob/master/LICENSE.md + http://github.com/tpetricek/FSharp.Formatting + https://raw.github.com/tpetricek/FSharp.Formatting/master/docs/misc/logo.png + false + Provides an F# implementation of Markdown parser and F# code formatter that can used to tokenize F# code and obtain information about tokens including tool tips with type information. The package comes with a sample that implements literate programming for F#. + Added latex support, tables and better formatting with line numbers + Copyright 2013 + + F# fsharp formatting markdown code fssnip literate programming + \ No newline at end of file diff --git a/packages/FSharp.Formatting.1.0.15/literate/StringParsing.fs b/packages/FSharp.Formatting.1.0.15/literate/StringParsing.fs index 4e5e2956..9cb1747a 100644 --- a/packages/FSharp.Formatting.1.0.15/literate/StringParsing.fs +++ b/packages/FSharp.Formatting.1.0.15/literate/StringParsing.fs @@ -1,160 +1,160 @@ -// -------------------------------------------------------------------------------------- -// F# Markdown (StringParsing.fs) -// (c) Tomas Petricek, 2012, Available under Apache 2.0 license. -// -------------------------------------------------------------------------------------- - -module FSharp.Patterns - -open System -open FSharp.Collections - -// -------------------------------------------------------------------------------------- -// Active patterns that simplify parsing of strings and lists of strings (lines) -// -------------------------------------------------------------------------------------- - -module String = - /// Matches when a string is a whitespace or null - let (|WhiteSpace|_|) s = - if String.IsNullOrWhiteSpace(s) then Some() else None - - /// Matches when a string does starts with non-whitespace - let (|Unindented|_|) (s:string) = - if not (String.IsNullOrWhiteSpace(s)) && s.TrimStart() = s then Some() else None - - /// Returns a string trimmed from both start and end - let (|TrimBoth|) (text:string) = text.Trim() - /// Returns a string trimmed from the end - let (|TrimEnd|) (text:string) = text.TrimEnd() - /// Returns a string trimmed from the start - let (|TrimStart|) (text:string) = text.TrimStart() - - /// Retrusn a string trimmed from the end using characters given as a parameter - let (|TrimEndUsing|) chars (text:string) = text.TrimEnd(Array.ofSeq chars) - - /// Returns a string trimmed from the start together with - /// the number of skipped whitespace characters - let (|TrimStartAndCount|) (text:string) = - let trimmed = text.TrimStart() - text.Length - trimmed.Length, trimmed - - /// Matches when a string starts with any of the specified sub-strings - let (|StartsWithAny|_|) (starts:seq) (text:string) = - if starts |> Seq.exists (text.StartsWith) then Some() else None - /// Matches when a string starts with the specified sub-string - let (|StartsWith|_|) (start:string) (text:string) = - if text.StartsWith(start) then Some(text.Substring(start.Length)) else None - /// Matches when a string starts with the specified sub-string - /// The matched string is trimmed from all whitespace. - let (|StartsWithTrim|_|) (start:string) (text:string) = - if text.StartsWith(start) then Some(text.Substring(start.Length).Trim()) else None - - /// Matches when a string starts with the given value and ends - /// with a given value (and returns the rest of it) - let (|StartsAndEndsWith|_|) (starts, ends) (s:string) = - if s.StartsWith(starts) && s.EndsWith(ends) && - s.Length >= starts.Length + ends.Length then - Some(s.Substring(starts.Length, s.Length - starts.Length - ends.Length)) - else None - - /// Matches when a string starts with the given value and ends - /// with a given value (and returns trimmed body) - let (|StartsAndEndsWithTrim|_|) args = function - | StartsAndEndsWith args (TrimBoth res) -> Some res - | _ -> None - - /// Matches when a string starts with a non-zero number of complete - /// repetitions of the specified parameter (and returns the number - /// of repetitions, together with the rest of the string) - /// - /// let (StartsWithRepeated "/\" (2, " abc")) = "/\/\ abc" - /// - let (|StartsWithRepeated|_|) (repeated:string) (text:string) = - let rec loop i = - if i = text.Length then i - elif text.[i] <> repeated.[i % repeated.Length] then i - else loop (i + 1) - - let n = loop 0 - if n = 0 || n % repeated.Length <> 0 then None - else Some(n/repeated.Length, text.Substring(n, text.Length - n)) - - /// Matches when a string starts with a sub-string wrapped using the - /// opening and closing sub-string specified in the parameter. - /// For example "[aa]bc" is wrapped in [ and ] pair. Returns the wrapped - /// text together with the rest. - let (|StartsWithWrapped|_|) (starts:string, ends:string) (text:string) = - if text.StartsWith(starts) then - let id = text.IndexOf(ends, starts.Length) - if id >= 0 then - let wrapped = text.Substring(starts.Length, id - starts.Length) - let rest = text.Substring(id + ends.Length, text.Length - id - ends.Length) - Some(wrapped, rest) - else None - else None - - /// Matches when a string consists of some number of - /// complete repetitions of a specified sub-string. - let (|EqualsRepeated|_|) repeated = function - | StartsWithRepeated repeated (n, "") -> Some() - | _ -> None - -module List = - /// Matches a list if it starts with a sub-list that is delimited - /// using the specified delimiters. Returns a wrapped list and the rest. - let inline (|DelimitedWith|_|) startl endl input = - if List.startsWith startl input then - match List.partitionUntilEquals endl (List.skip startl.Length input) with - | Some(pre, post) -> Some(pre, List.skip endl.Length post) - | None -> None - else None - - /// Matches a list if it starts with a sub-list that is delimited - /// using the specified delimiter. Returns a wrapped list and the rest. - let inline (|Delimited|_|) str = (|DelimitedWith|_|) str str - - /// Matches a list if it starts with a bracketed list. Nested brackets - /// are skipped (by counting opening and closing brackets) and can be - /// escaped using the '\' symbol. - let (|BracketDelimited|_|) startc endc input = - let rec loop acc count = function - | '\\'::x::xs when x = endc -> loop (x::acc) count xs - | x::xs when x = endc && count = 0 -> Some(List.rev acc, xs) - | x::xs when x = endc -> loop (x::acc) (count - 1) xs - | x::xs when x = startc -> loop (x::acc) (count + 1) xs - | x::xs -> loop (x::acc) count xs - | [] -> None - match input with - | x::xs when x = startc -> loop [] 0 xs - | _ -> None - - /// Retruns a list of characters as a string. - let (|AsString|) chars = String(Array.ofList chars) - -module Lines = - /// Removes blank lines from the start and the end of a list - let (|TrimBlank|) lines = - lines - |> List.skipWhile String.IsNullOrWhiteSpace |> List.rev - |> List.skipWhile String.IsNullOrWhiteSpace |> List.rev - - /// Matches when there are some lines at the beginning that are - /// either empty (or whitespace) or start with the specified string. - /// Returns all such lines from the beginning until a different line. - let (|TakeStartingWithOrBlank|_|) start input = - match List.partitionWhile (fun s -> - String.IsNullOrWhiteSpace s || s.StartsWith(start)) input with - | matching, rest when matching <> [] -> Some(matching, rest) - | _ -> None - - /// Removes whitespace lines from the beginning of the list - let (|TrimBlankStart|) = List.skipWhile (String.IsNullOrWhiteSpace) - - -/// Parameterized pattern that assigns the specified value to the -/// first component of a tuple. Usage: -/// -/// match str with -/// | Let 1 (n, "one") | Let 2 (n, "two") -> n -/// -let (|Let|) a b = (a, b) - +// -------------------------------------------------------------------------------------- +// F# Markdown (StringParsing.fs) +// (c) Tomas Petricek, 2012, Available under Apache 2.0 license. +// -------------------------------------------------------------------------------------- + +module FSharp.Patterns + +open System +open FSharp.Collections + +// -------------------------------------------------------------------------------------- +// Active patterns that simplify parsing of strings and lists of strings (lines) +// -------------------------------------------------------------------------------------- + +module String = + /// Matches when a string is a whitespace or null + let (|WhiteSpace|_|) s = + if String.IsNullOrWhiteSpace(s) then Some() else None + + /// Matches when a string does starts with non-whitespace + let (|Unindented|_|) (s:string) = + if not (String.IsNullOrWhiteSpace(s)) && s.TrimStart() = s then Some() else None + + /// Returns a string trimmed from both start and end + let (|TrimBoth|) (text:string) = text.Trim() + /// Returns a string trimmed from the end + let (|TrimEnd|) (text:string) = text.TrimEnd() + /// Returns a string trimmed from the start + let (|TrimStart|) (text:string) = text.TrimStart() + + /// Retrusn a string trimmed from the end using characters given as a parameter + let (|TrimEndUsing|) chars (text:string) = text.TrimEnd(Array.ofSeq chars) + + /// Returns a string trimmed from the start together with + /// the number of skipped whitespace characters + let (|TrimStartAndCount|) (text:string) = + let trimmed = text.TrimStart() + text.Length - trimmed.Length, trimmed + + /// Matches when a string starts with any of the specified sub-strings + let (|StartsWithAny|_|) (starts:seq) (text:string) = + if starts |> Seq.exists (text.StartsWith) then Some() else None + /// Matches when a string starts with the specified sub-string + let (|StartsWith|_|) (start:string) (text:string) = + if text.StartsWith(start) then Some(text.Substring(start.Length)) else None + /// Matches when a string starts with the specified sub-string + /// The matched string is trimmed from all whitespace. + let (|StartsWithTrim|_|) (start:string) (text:string) = + if text.StartsWith(start) then Some(text.Substring(start.Length).Trim()) else None + + /// Matches when a string starts with the given value and ends + /// with a given value (and returns the rest of it) + let (|StartsAndEndsWith|_|) (starts, ends) (s:string) = + if s.StartsWith(starts) && s.EndsWith(ends) && + s.Length >= starts.Length + ends.Length then + Some(s.Substring(starts.Length, s.Length - starts.Length - ends.Length)) + else None + + /// Matches when a string starts with the given value and ends + /// with a given value (and returns trimmed body) + let (|StartsAndEndsWithTrim|_|) args = function + | StartsAndEndsWith args (TrimBoth res) -> Some res + | _ -> None + + /// Matches when a string starts with a non-zero number of complete + /// repetitions of the specified parameter (and returns the number + /// of repetitions, together with the rest of the string) + /// + /// let (StartsWithRepeated "/\" (2, " abc")) = "/\/\ abc" + /// + let (|StartsWithRepeated|_|) (repeated:string) (text:string) = + let rec loop i = + if i = text.Length then i + elif text.[i] <> repeated.[i % repeated.Length] then i + else loop (i + 1) + + let n = loop 0 + if n = 0 || n % repeated.Length <> 0 then None + else Some(n/repeated.Length, text.Substring(n, text.Length - n)) + + /// Matches when a string starts with a sub-string wrapped using the + /// opening and closing sub-string specified in the parameter. + /// For example "[aa]bc" is wrapped in [ and ] pair. Returns the wrapped + /// text together with the rest. + let (|StartsWithWrapped|_|) (starts:string, ends:string) (text:string) = + if text.StartsWith(starts) then + let id = text.IndexOf(ends, starts.Length) + if id >= 0 then + let wrapped = text.Substring(starts.Length, id - starts.Length) + let rest = text.Substring(id + ends.Length, text.Length - id - ends.Length) + Some(wrapped, rest) + else None + else None + + /// Matches when a string consists of some number of + /// complete repetitions of a specified sub-string. + let (|EqualsRepeated|_|) repeated = function + | StartsWithRepeated repeated (n, "") -> Some() + | _ -> None + +module List = + /// Matches a list if it starts with a sub-list that is delimited + /// using the specified delimiters. Returns a wrapped list and the rest. + let inline (|DelimitedWith|_|) startl endl input = + if List.startsWith startl input then + match List.partitionUntilEquals endl (List.skip startl.Length input) with + | Some(pre, post) -> Some(pre, List.skip endl.Length post) + | None -> None + else None + + /// Matches a list if it starts with a sub-list that is delimited + /// using the specified delimiter. Returns a wrapped list and the rest. + let inline (|Delimited|_|) str = (|DelimitedWith|_|) str str + + /// Matches a list if it starts with a bracketed list. Nested brackets + /// are skipped (by counting opening and closing brackets) and can be + /// escaped using the '\' symbol. + let (|BracketDelimited|_|) startc endc input = + let rec loop acc count = function + | '\\'::x::xs when x = endc -> loop (x::acc) count xs + | x::xs when x = endc && count = 0 -> Some(List.rev acc, xs) + | x::xs when x = endc -> loop (x::acc) (count - 1) xs + | x::xs when x = startc -> loop (x::acc) (count + 1) xs + | x::xs -> loop (x::acc) count xs + | [] -> None + match input with + | x::xs when x = startc -> loop [] 0 xs + | _ -> None + + /// Retruns a list of characters as a string. + let (|AsString|) chars = String(Array.ofList chars) + +module Lines = + /// Removes blank lines from the start and the end of a list + let (|TrimBlank|) lines = + lines + |> List.skipWhile String.IsNullOrWhiteSpace |> List.rev + |> List.skipWhile String.IsNullOrWhiteSpace |> List.rev + + /// Matches when there are some lines at the beginning that are + /// either empty (or whitespace) or start with the specified string. + /// Returns all such lines from the beginning until a different line. + let (|TakeStartingWithOrBlank|_|) start input = + match List.partitionWhile (fun s -> + String.IsNullOrWhiteSpace s || s.StartsWith(start)) input with + | matching, rest when matching <> [] -> Some(matching, rest) + | _ -> None + + /// Removes whitespace lines from the beginning of the list + let (|TrimBlankStart|) = List.skipWhile (String.IsNullOrWhiteSpace) + + +/// Parameterized pattern that assigns the specified value to the +/// first component of a tuple. Usage: +/// +/// match str with +/// | Let 1 (n, "one") | Let 2 (n, "two") -> n +/// +let (|Let|) a b = (a, b) + diff --git a/packages/FSharp.Formatting.1.0.15/literate/content/tips.js b/packages/FSharp.Formatting.1.0.15/literate/content/tips.js index 28ed18f6..1cd162f9 100644 --- a/packages/FSharp.Formatting.1.0.15/literate/content/tips.js +++ b/packages/FSharp.Formatting.1.0.15/literate/content/tips.js @@ -1,47 +1,47 @@ -var currentTip = null; -var currentTipElement = null; - -function hideTip(evt, name, unique) -{ - var el = document.getElementById(name); - el.style.display = "none"; - currentTip = null; -} - -function findPos(obj) -{ - var curleft = 0; - var curtop = obj.offsetHeight; - while (obj) - { - curleft += obj.offsetLeft; - curtop += obj.offsetTop; - obj = obj.offsetParent; - }; - return [curleft, curtop]; -} - -function hideUsingEsc(e) -{ - if (!e) { e = event; } - hideTip(e, currentTipElement, currentTip); -} - -function showTip(evt, name, unique, owner) -{ - document.onkeydown = hideUsingEsc; - if (currentTip == unique) return; - currentTip = unique; - currentTipElement = name; - - var pos = findPos(owner ? owner : (evt.srcElement ? evt.srcElement : evt.target)); - var posx = pos[0]; - var posy = pos[1]; - - var el = document.getElementById(name); - var parent = (document.documentElement == null) ? document.body : document.documentElement; - el.style.position = "absolute"; - el.style.left = posx + "px"; - el.style.top = posy + "px"; - el.style.display = "block"; +var currentTip = null; +var currentTipElement = null; + +function hideTip(evt, name, unique) +{ + var el = document.getElementById(name); + el.style.display = "none"; + currentTip = null; +} + +function findPos(obj) +{ + var curleft = 0; + var curtop = obj.offsetHeight; + while (obj) + { + curleft += obj.offsetLeft; + curtop += obj.offsetTop; + obj = obj.offsetParent; + }; + return [curleft, curtop]; +} + +function hideUsingEsc(e) +{ + if (!e) { e = event; } + hideTip(e, currentTipElement, currentTip); +} + +function showTip(evt, name, unique, owner) +{ + document.onkeydown = hideUsingEsc; + if (currentTip == unique) return; + currentTip = unique; + currentTipElement = name; + + var pos = findPos(owner ? owner : (evt.srcElement ? evt.srcElement : evt.target)); + var posx = pos[0]; + var posy = pos[1]; + + var el = document.getElementById(name); + var parent = (document.documentElement == null) ? document.body : document.documentElement; + el.style.position = "absolute"; + el.style.left = posx + "px"; + el.style.top = posy + "px"; + el.style.display = "block"; } \ No newline at end of file diff --git a/packages/FSharp.Formatting.1.0.15/literate/templates/template-file.html b/packages/FSharp.Formatting.1.0.15/literate/templates/template-file.html index c1a7e77c..d4d7897c 100644 --- a/packages/FSharp.Formatting.1.0.15/literate/templates/template-file.html +++ b/packages/FSharp.Formatting.1.0.15/literate/templates/template-file.html @@ -1,35 +1,35 @@ - - - - - - {page-title} - - - - - - - - - - - -
-
-
-
- {document} - {tooltips} -
-
-
-
- + + + + + + {page-title} + + + + + + + + + + + +
+
+
+
+ {document} + {tooltips} +
+
+
+
+ \ No newline at end of file diff --git a/packages/FSharp.Formatting.1.0.15/literate/templates/template-project.html b/packages/FSharp.Formatting.1.0.15/literate/templates/template-project.html index f6803c9a..dbc3f7ba 100644 --- a/packages/FSharp.Formatting.1.0.15/literate/templates/template-project.html +++ b/packages/FSharp.Formatting.1.0.15/literate/templates/template-project.html @@ -1,62 +1,62 @@ - - - - - - {page-title} - - - - - - - - - - - - - -
-
- -

{project-name}

-
-
-
-
- {document} - {tooltips} -
-
- - -
-
-
- Fork me on GitHub - + + + + + + {page-title} + + + + + + + + + + + + + +
+
+ +

{project-name}

+
+
+
+
+ {document} + {tooltips} +
+
+ + +
+
+
+ Fork me on GitHub + \ No newline at end of file diff --git a/packages/FsUnit.1.2.1.0/FsUnit.1.2.1.0.nuspec b/packages/FsUnit.1.2.1.0/FsUnit.1.2.1.0.nuspec index 0964d434..bfbde7ef 100644 --- a/packages/FsUnit.1.2.1.0/FsUnit.1.2.1.0.nuspec +++ b/packages/FsUnit.1.2.1.0/FsUnit.1.2.1.0.nuspec @@ -1,22 +1,22 @@ - - - - FsUnit - 1.2.1.0 - FsUnit - Ray Vernagus and Daniel Mohl - Ray Vernagus and Daniel Mohl - http://fsunit.codeplex.com/license - http://fsunit.codeplex.com/ - false - FsUnit is a set of extensions that add special testing syntax to NUnit. - The goals of FsUnit are to make unit-testing feel more functional while leverage existing testing frameworks. - - - en-US - F# fsharp NUnit FsUnit - - - - + + + + FsUnit + 1.2.1.0 + FsUnit + Ray Vernagus and Daniel Mohl + Ray Vernagus and Daniel Mohl + http://fsunit.codeplex.com/license + http://fsunit.codeplex.com/ + false + FsUnit is a set of extensions that add special testing syntax to NUnit. + The goals of FsUnit are to make unit-testing feel more functional while leverage existing testing frameworks. + + + en-US + F# fsharp NUnit FsUnit + + + + \ No newline at end of file diff --git a/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec b/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec index a5773095..6532fdd8 100644 --- a/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec +++ b/packages/NUnit.2.6.3/NUnit.2.6.3.nuspec @@ -1,27 +1,27 @@ - - - - NUnit - 2.6.3 - NUnit - Charlie Poole - Charlie Poole - http://nunit.org/nuget/license.html - http://nunit.org/ - http://nunit.org/nuget/nunit_32x32.png - false - NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. - -Version 2.6 is the seventh major release of this well-known and well-tested programming tool. - -This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. - NUnit is a unit-testing framework for all .Net languages with a strong TDD focus. - Version 2.6 is the seventh major release of NUnit. - -Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. - -The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package. - en-US - nunit test testing tdd framework fluent assert theory plugin addin - + + + + NUnit + 2.6.3 + NUnit + Charlie Poole + Charlie Poole + http://nunit.org/nuget/license.html + http://nunit.org/ + http://nunit.org/nuget/nunit_32x32.png + false + NUnit features a fluent assert syntax, parameterized, generic and theory tests and is user-extensible. A number of runners, both from the NUnit project and by third parties, are able to execute NUnit tests. + +Version 2.6 is the seventh major release of this well-known and well-tested programming tool. + +This package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. + NUnit is a unit-testing framework for all .Net languages with a strong TDD focus. + Version 2.6 is the seventh major release of NUnit. + +Unlike earlier versions, this package includes only the framework assembly. You will need to install the NUnit.Runners package unless you are using a third-party runner. + +The nunit.mocks assembly is now provided by the NUnit.Mocks package. The pnunit.framework assembly is provided by the pNUnit package. + en-US + nunit test testing tdd framework fluent assert theory plugin addin + \ No newline at end of file