handlers, IBlingLogger logger)
14 | {
15 | Handlers = handlers;
16 | _logger = logger;
17 | }
18 |
19 | protected override IEnumerable FindHandlers(object @event)
20 | {
21 | return
22 | Handlers.Where(
23 | x =>
24 | x.GetType()
25 | .GetInterfaces()
26 | .Any(i => typeof (IBlingHandler).IsAssignableFrom(i)
27 | && (i.GenericTypeArguments.Any()
28 | && i.GenericTypeArguments[0] == @event.GetType())));
29 | }
30 |
31 | protected override void LogInfo(object handler, DateTime timeStamp, string message)
32 | {
33 | _logger.LogInfo(handler, timeStamp, message);
34 | }
35 |
36 | protected override void LogException(object handler, DateTime timeStamp, Exception exception)
37 | {
38 | _logger.LogException(handler, timeStamp, exception);
39 | }
40 | }
41 | }
--------------------------------------------------------------------------------
/lib/NHibernate.3.3.1.4000/ConfigurationTemplates/FireBird.cfg.xml:
--------------------------------------------------------------------------------
1 |
2 |
12 |
17 |
18 |
19 | NHibernate.Driver.FirebirdClientDriver
20 |
21 | Server=localhost;
22 | Database=C:\nhibernate.fdb;
23 | User=SYSDBA;Password=masterkey
24 |
25 | false
26 | NHibernate.Dialect.FirebirdDialect
27 | 60
28 | true 1, false 0, yes 1, no 0
29 |
30 |
31 |
--------------------------------------------------------------------------------
/lib/Machine.Specifications.0.5.6.0/tools/Machine.Specifications.GallioAdapter.plugin:
--------------------------------------------------------------------------------
1 |
2 |
5 |
6 | Machine Specifications Adapter Plugin
7 | 0.5.6.0
8 | Provides support for running MSpec within Gallio. Requires the assemblies from MSpec.
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
26 |
27 |
29 |
30 |
31 |
32 |
35 |
36 | Machine Specifications
37 | Machine.Specifications
38 | 0.5.6.0
39 | Assembly
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/lib/Moq.4.0.10827/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2007. Clarius Consulting, Manas Technology Solutions, InSTEDD
2 | http://code.google.com/p/moq/
3 | All rights reserved.
4 |
5 | Redistribution and use in source and binary forms,
6 | with or without modification, are permitted provided
7 | that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the
10 | above copyright notice, this list of conditions and
11 | the following disclaimer.
12 |
13 | * Redistributions in binary form must reproduce
14 | the above copyright notice, this list of conditions
15 | and the following disclaimer in the documentation
16 | and/or other materials provided with the distribution.
17 |
18 | * Neither the name of Clarius Consulting, Manas Technology Solutions or InSTEDD nor the
19 | names of its contributors may be used to endorse
20 | or promote products derived from this software
21 | without specific prior written permission.
22 |
23 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
24 | CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
25 | INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
26 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
28 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
31 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32 | INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
33 | WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 | SUCH DAMAGE.
37 |
38 | [This is the BSD license, see
39 | http://www.opensource.org/licenses/bsd-license.php]
--------------------------------------------------------------------------------
/src/Packages.dgml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
31 |
32 |
--------------------------------------------------------------------------------
/rakefile.rb:
--------------------------------------------------------------------------------
1 | MSBUILD_PATH = "C:/Windows/Microsoft.NET/Framework/v4.0.30319/msbuild.exe"
2 | MSPEC_PATH = "lib/Machine.Specifications.0.5.6.0/tools/mspec-clr4.exe"
3 | #MSTEST_PATH = "\"" + ENV['VS90COMNTOOLS'].gsub("Tools","IDE") + "mstest.exe\""
4 | BUILD_PATH = File.expand_path('build')
5 | DEPLOY_PATH = File.expand_path('deploy')
6 | REPORTS_PATH = File.expand_path('testresults')
7 | SOLUTION = "src/BlingBag.sln"
8 | TRXFILE = File.join(REPORTS_PATH, SOLUTION + '.trx')
9 | CONFIG = "Debug"
10 |
11 | task :default => [:all]
12 |
13 | task :all => [:prepare, :compile, :tests, :deploy ]
14 |
15 | task :prepare do
16 | require 'fileutils'
17 | FileUtils.rm_rf BUILD_PATH
18 | end
19 |
20 | task :compile do
21 | puts 'Compiling solution...'
22 | sh "#{MSBUILD_PATH} /p:Configuration=#{CONFIG} /p:OutDir=\"#{BUILD_PATH}/\" /p:PostBuildEvent=\"\" #{SOLUTION}"
23 | end
24 |
25 | task :deploy do
26 | puts 'Preparing deployment...'
27 | mkdir DEPLOY_PATH unless File.exist?(DEPLOY_PATH)
28 | cp BUILD_PATH + "/DomainEvents.dll", DEPLOY_PATH
29 | cp BUILD_PATH + "/DomainEvents.Testing.dll", DEPLOY_PATH
30 | cp BUILD_PATH + "/DomainEvents.StructureMap.dll", DEPLOY_PATH
31 | end
32 |
33 | task :tests do
34 | puts "Locating and running MSpec tests in #{BUILD_PATH}."
35 | puts 'This can take a while, please wait...'
36 |
37 | # Create output directory if necessary
38 | mkdir REPORTS_PATH unless File.exist?(REPORTS_PATH)
39 |
40 | # Clear out old reports, but don't talk about it.
41 | verbose(false) do
42 | FileList.new("#{REPORTS_PATH}/*").each { |file| rm file }
43 | end
44 |
45 | # Find all the specs DLLs
46 | testDlls = FileList.new("#{BUILD_PATH}/*.Specs.dll")
47 |
48 | # Join the file list into a single string with quotes surrounding the file paths
49 | TEST_DLL_LIST = '"' + testDlls.join('" "') + '"'
50 |
51 | # Specify our mspec command line parameters
52 | HTML_SWITCH = "--html \"#{REPORTS_PATH}\""
53 | XML_SWITCH = "--xml \"#{REPORTS_PATH}\\testresults.xml\""
54 |
55 | # Run the tests and give a message on failure
56 | # But we don't want to hear the chatter, so dump the console output to a file
57 | File.new("#{REPORTS_PATH}/mspec.output.txt",'w') << `#{MSPEC_PATH} #{HTML_SWITCH} #{XML_SWITCH} #{TEST_DLL_LIST}`
58 | result = $?.to_i
59 |
60 | raise "One or more tests failed. Please see results in #{REPORTS_PATH}\\index.html" unless result == 0
61 |
62 | # If we get here, all's good
63 | puts "All tests passed"
64 | end
--------------------------------------------------------------------------------
/src/BlingBag.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio 2013
4 | VisualStudioVersion = 12.0.30501.0
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlingBag", "BlingBag\BlingBag.csproj", "{3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}"
7 | EndProject
8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BlingBag.Specs", "BlingBag.Specs\BlingBag.Specs.csproj", "{11813EB6-C1E1-4475-8D72-E82305625703}"
9 | EndProject
10 | Global
11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
12 | Debug|Any CPU = Debug|Any CPU
13 | Debug|Mixed Platforms = Debug|Mixed Platforms
14 | Debug|x86 = Debug|x86
15 | Release|Any CPU = Release|Any CPU
16 | Release|Mixed Platforms = Release|Mixed Platforms
17 | Release|x86 = Release|x86
18 | EndGlobalSection
19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
20 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
21 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Debug|Any CPU.Build.0 = Debug|Any CPU
22 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
23 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
24 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Debug|x86.ActiveCfg = Debug|Any CPU
25 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Release|Any CPU.ActiveCfg = Release|Any CPU
26 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Release|Any CPU.Build.0 = Release|Any CPU
27 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
28 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Release|Mixed Platforms.Build.0 = Release|Any CPU
29 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}.Release|x86.ActiveCfg = Release|Any CPU
30 | {11813EB6-C1E1-4475-8D72-E82305625703}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31 | {11813EB6-C1E1-4475-8D72-E82305625703}.Debug|Any CPU.Build.0 = Debug|Any CPU
32 | {11813EB6-C1E1-4475-8D72-E82305625703}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
33 | {11813EB6-C1E1-4475-8D72-E82305625703}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
34 | {11813EB6-C1E1-4475-8D72-E82305625703}.Debug|x86.ActiveCfg = Debug|Any CPU
35 | {11813EB6-C1E1-4475-8D72-E82305625703}.Release|Any CPU.ActiveCfg = Release|Any CPU
36 | {11813EB6-C1E1-4475-8D72-E82305625703}.Release|Any CPU.Build.0 = Release|Any CPU
37 | {11813EB6-C1E1-4475-8D72-E82305625703}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
38 | {11813EB6-C1E1-4475-8D72-E82305625703}.Release|Mixed Platforms.Build.0 = Release|Any CPU
39 | {11813EB6-C1E1-4475-8D72-E82305625703}.Release|x86.ActiveCfg = Release|Any CPU
40 | EndGlobalSection
41 | GlobalSection(SolutionProperties) = preSolution
42 | HideSolutionNode = FALSE
43 | EndGlobalSection
44 | EndGlobal
45 |
--------------------------------------------------------------------------------
/src/BlingBag.Testing/BlingBag.Testing.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {5C2E30BE-687D-4C8F-ADA0-4B07D3DFCE44}
9 | Library
10 | Properties
11 | BlingBag.Testing
12 | BlingBag.Testing
13 | v4.0
14 | 512
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
50 | BlingBag
51 |
52 |
53 |
54 |
61 |
--------------------------------------------------------------------------------
/src/BlingBag/BlingBag.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
9 | Library
10 | Properties
11 | BlingBag
12 | BlingBag
13 | v4.5
14 | 512
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | false
26 |
27 |
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 | false
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
61 |
--------------------------------------------------------------------------------
/src/BlingBag/BlingDispatcherBase.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections;
3 | using System.Linq;
4 | using System.Reflection;
5 | using System.Threading.Tasks;
6 |
7 | namespace BlingBag
8 | {
9 | public abstract class BlingDispatcherBase : IBlingDispatcher
10 | {
11 | #region IBlingDispatcher Members
12 |
13 | public async Task Dispatch(object @event)
14 | {
15 | IEnumerable matchingBlingHandlers = FindHandlers(@event);
16 | foreach (object handler in matchingBlingHandlers)
17 | {
18 | LogInfo(handler, DateTime.UtcNow, string.Format("Dispatching {0}...", handler.GetType().Name));
19 |
20 | try
21 | {
22 | await InvokeMethod("Handle", handler, @event);
23 | LogInfo(handler, DateTime.UtcNow, string.Format("Finished {0}.", handler.GetType().Name));
24 | }
25 | catch (TargetInvocationException ex)
26 | {
27 | LogException(handler, DateTime.UtcNow, ex.InnerException);
28 | throw;
29 | }
30 | catch (AggregateException ex)
31 | {
32 | LogException(handler, DateTime.UtcNow, ex.InnerException);
33 | throw;
34 | }
35 | catch (Exception ex)
36 | {
37 | LogException(handler, DateTime.UtcNow, ex);
38 | throw;
39 | }
40 | }
41 | }
42 |
43 | async Task InvokeMethod(string methodName, object invokableObject, object methodArg)
44 | {
45 | try
46 | {
47 | MethodInfo handlerMethod =
48 | invokableObject.GetType()
49 | .GetMethods()
50 | .FirstOrDefault(
51 | x =>
52 | x.Name == methodName &&
53 | x.GetParameters().Any(p => p.ParameterType == methodArg.GetType()));
54 |
55 | if (handlerMethod == null) throw new Exception("No matching 'Handle' method found on handler.");
56 |
57 | await (Task) handlerMethod.Invoke(invokableObject, new[] {methodArg});
58 | }
59 | catch (AggregateException ex)
60 | {
61 | throw ex.InnerException;
62 | }
63 | catch (TargetInvocationException ex)
64 | {
65 | throw ex.InnerException;
66 | }
67 | catch (Exception ex)
68 | {
69 | throw ex.GetBaseException();
70 | }
71 | }
72 |
73 | #endregion
74 |
75 | protected abstract IEnumerable FindHandlers(object @event);
76 | protected abstract void LogInfo(object handler, DateTime timeStamp, string message);
77 | protected abstract void LogException(object handler, DateTime timeStamp, Exception exception);
78 | }
79 | }
--------------------------------------------------------------------------------
/src/BlingBag.StructureMap/BlingBag.StructureMap.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {C7DC7F8A-1A48-41E3-8084-549AEF5AE244}
9 | Library
10 | Properties
11 | BlingBag.StructureMap
12 | BlingBag.StructureMap
13 | v4.0
14 | 512
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | False
36 | ..\..\lib\structuremap.2.6.4.1\lib\net40\StructureMap.dll
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
56 | BlingBag
57 |
58 |
59 |
60 |
67 |
--------------------------------------------------------------------------------
/src/BlingBag.NHibernate/BlingBag.NHibernate.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {CC9842DA-D188-492A-963E-C69ECD14BD85}
9 | Library
10 | Properties
11 | BlingBag.NHibernate
12 | BlingBag.NHibernate
13 | v4.0
14 | 512
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | ..\..\lib\Iesi.Collections.3.2.0.4000\lib\Net35\Iesi.Collections.dll
36 |
37 |
38 | ..\..\lib\NHibernate.3.3.1.4000\lib\Net35\NHibernate.dll
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
55 | BlingBag
56 |
57 |
58 |
59 |
60 |
61 |
62 |
69 |
--------------------------------------------------------------------------------
/src/BlingBag.AutoFac/BlingBag.AutoFac.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {DDECA8DD-AE88-4AA0-B7BC-9C2B18C075E9}
9 | Library
10 | Properties
11 | BlingBag.AutoFac
12 | BlingBag.AutoFac
13 | v4.0
14 | 512
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | False
36 | ..\..\lib\Autofac.3.0.2\lib\net40\Autofac.dll
37 |
38 |
39 | False
40 | ..\..\lib\Autofac.3.0.2\lib\net40\Autofac.Configuration.dll
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
57 | BlingBag
58 |
59 |
60 |
61 |
62 |
63 |
64 |
71 |
--------------------------------------------------------------------------------
/lib/NHibernate.3.3.1.4000/NHibernate.readme.html:
--------------------------------------------------------------------------------
1 | Welcome to NHibernate
2 |
3 | NHibernate is a mature, open source object-relational mapper for the .NET framework. It is actively developed,
4 | fully featured and used in thousands of successful projects.
5 |
6 | The NHibernate community website - http://www.nhforge.org - has a range of resources to help you get started,
7 | including wikis, blogs and reference documentation.
8 |
9 | Latest Version
10 |
11 | The quickest way to get the latest release of NHibernate is to add it to your project using
12 | NuGet (http://nuget.org/List/Packages/NHibernate).
13 |
14 | Alternatively binaries are available from SourceForge at http://sourceforge.net/projects/nhibernate.
15 |
16 | You are encouraged to review the release notes (releasenotes.txt), particularly when upgrading to a
17 | later version. The release notes will generally document any breaking changes.
18 |
19 |
20 |
21 | There are two official NHibernate community forums:
22 |
23 |
27 |
28 | Bug Reports
29 |
30 | If you find any bugs, please report them using the JIRA bug tracker. A
31 | test-case that demonstrates the issue is usually required. Instructions on providing a test-case
32 | can be found here.
33 |
34 | Licenses
35 |
36 | This software is distributed under the terms of the Free Software Foundation Lesser GNU Public License (LGPL), version 2.1 (see lgpl.txt).
37 |
38 | Credits
39 |
40 | Many thanks to the following individuals, organisations and projects whose work is so important to the success
41 | of NHibernate (in no particular order):
42 |
43 |
--------------------------------------------------------------------------------
/src/BlingBag.StructureMap.Specs/BlingBag.StructureMap.Specs.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {5F9B87BA-C8A8-438C-9D2F-AB8E7FC35407}
9 | Library
10 | Properties
11 | BlingBag.StructureMap.Specs
12 | BlingBag.StructureMap.Specs
13 | v4.0
14 | 512
15 |
16 |
17 | true
18 | full
19 | false
20 | bin\Debug\
21 | DEBUG;TRACE
22 | prompt
23 | 4
24 |
25 |
26 | pdbonly
27 | true
28 | bin\Release\
29 | TRACE
30 | prompt
31 | 4
32 |
33 |
34 |
35 | ..\..\lib\Machine.Specifications.0.5.6.0\lib\net40\Machine.Specifications.dll
36 |
37 |
38 | ..\..\lib\Machine.Specifications.0.5.6.0\lib\net40\Machine.Specifications.Clr4.dll
39 |
40 |
41 | ..\..\lib\Moq.4.0.10827\lib\NET40\Moq.dll
42 |
43 |
44 | False
45 | ..\..\lib\structuremap.2.6.4.1\lib\net40\StructureMap.dll
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
68 | BlingBag
69 |
70 |
71 |
72 |
79 |
--------------------------------------------------------------------------------
/lib/Machine.Specifications.0.7.0/tools/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2008 Machine Project
2 | Portions Copyright (c) 2008 Jacob Lewallen, Aaron Jensen
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in
12 | all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 | THE SOFTWARE.
21 |
22 | *****************************
23 | Some parts licensed under MS-PL
24 | *****************************
25 |
26 | This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
27 |
28 | 1. Definitions
29 |
30 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
31 |
32 | A "contribution" is the original software, or any additions or changes to the software.
33 |
34 | A "contributor" is any person that distributes its contribution under this license.
35 |
36 | "Licensed patents" are a contributor's patent claims that read directly on its contribution.
37 |
38 | 2. Grant of Rights
39 |
40 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
41 |
42 | (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
43 |
44 | 3. Conditions and Limitations
45 |
46 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
47 |
48 | (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
49 |
50 | (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
51 |
52 | (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
53 |
54 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
--------------------------------------------------------------------------------
/lib/Machine.Specifications.0.9.3/tools/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2008 Machine Project
2 | Portions Copyright (c) 2008 Jacob Lewallen, Aaron Jensen
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in
12 | all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 | THE SOFTWARE.
21 |
22 | *****************************
23 | Some parts licensed under MS-PL
24 | *****************************
25 |
26 | This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
27 |
28 | 1. Definitions
29 |
30 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
31 |
32 | A "contribution" is the original software, or any additions or changes to the software.
33 |
34 | A "contributor" is any person that distributes its contribution under this license.
35 |
36 | "Licensed patents" are a contributor's patent claims that read directly on its contribution.
37 |
38 | 2. Grant of Rights
39 |
40 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
41 |
42 | (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
43 |
44 | 3. Conditions and Limitations
45 |
46 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
47 |
48 | (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
49 |
50 | (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
51 |
52 | (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
53 |
54 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
--------------------------------------------------------------------------------
/lib/Machine.Specifications.Should.0.7.2/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2008 Machine Project
2 | Portions Copyright (c) 2008 Jacob Lewallen, Aaron Jensen
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in
12 | all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 | THE SOFTWARE.
21 |
22 | *****************************
23 | Some parts licensed under MS-PL
24 | *****************************
25 |
26 | This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
27 |
28 | 1. Definitions
29 |
30 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
31 |
32 | A "contribution" is the original software, or any additions or changes to the software.
33 |
34 | A "contributor" is any person that distributes its contribution under this license.
35 |
36 | "Licensed patents" are a contributor's patent claims that read directly on its contribution.
37 |
38 | 2. Grant of Rights
39 |
40 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
41 |
42 | (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
43 |
44 | 3. Conditions and Limitations
45 |
46 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
47 |
48 | (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
49 |
50 | (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
51 |
52 | (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
53 |
54 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
--------------------------------------------------------------------------------
/lib/Machine.Specifications.0.5.6.0/tools/License.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2008 Machine Project
2 | Portions Copyright (c) 2008 Jacob Lewallen, Aaron Jensen
3 |
4 | Permission is hereby granted, free of charge, to any person obtaining a copy
5 | of this software and associated documentation files (the "Software"), to deal
6 | in the Software without restriction, including without limitation the rights
7 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the Software is
9 | furnished to do so, subject to the following conditions:
10 |
11 | The above copyright notice and this permission notice shall be included in
12 | all copies or substantial portions of the Software.
13 |
14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20 | THE SOFTWARE.
21 |
22 | *****************************
23 | Some parts licensed under MS-PL
24 | *****************************
25 |
26 | This license governs use of the accompanying software. If you use the software, you accept this license. If you do not accept the license, do not use the software.
27 |
28 | 1. Definitions
29 |
30 | The terms "reproduce," "reproduction," "derivative works," and "distribution" have the same meaning here as under U.S. copyright law.
31 |
32 | A "contribution" is the original software, or any additions or changes to the software.
33 |
34 | A "contributor" is any person that distributes its contribution under this license.
35 |
36 | "Licensed patents" are a contributor's patent claims that read directly on its contribution.
37 |
38 | 2. Grant of Rights
39 |
40 | (A) Copyright Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free copyright license to reproduce its contribution, prepare derivative works of its contribution, and distribute its contribution or any derivative works that you create.
41 |
42 | (B) Patent Grant- Subject to the terms of this license, including the license conditions and limitations in section 3, each contributor grants you a non-exclusive, worldwide, royalty-free license under its licensed patents to make, have made, use, sell, offer for sale, import, and/or otherwise dispose of its contribution in the software or derivative works of the contribution in the software.
43 |
44 | 3. Conditions and Limitations
45 |
46 | (A) No Trademark License- This license does not grant you rights to use any contributors' name, logo, or trademarks.
47 |
48 | (B) If you bring a patent claim against any contributor over patents that you claim are infringed by the software, your patent license from such contributor to the software ends automatically.
49 |
50 | (C) If you distribute any portion of the software, you must retain all copyright, patent, trademark, and attribution notices that are present in the software.
51 |
52 | (D) If you distribute any portion of the software in source code form, you may do so only under this license by including a complete copy of this license with your distribution. If you distribute any portion of the software in compiled or object code form, you may only do so under a license that complies with this license.
53 |
54 | (E) The software is licensed "as-is." You bear the risk of using it. The contributors give no express warranties, guarantees or conditions. You may have additional consumer rights under your local laws which this license cannot change. To the extent permitted under your local laws, the contributors exclude the implied warranties of merchantability, fitness for a particular purpose and non-infringement.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | BlingBag
2 | ========
3 |
4 | ### The Problem:
5 | As an excellent software developer, you want to be sure that your code is maintainable, testable, expressive, and beautiful. But sometimes those desires seem to conflict with one another. For instance, an expressive domain should contain entities that, not only include well-named properties, but also the behavior of the business's domain. But, if you include behavior in your domain entities, you run the risk of harming the application's maintainability by having classes with more than one "reason to change" or "responsibility" (see Single Responsibility Principle).
6 |
7 | ### The Solution:
8 | Well, the solution really has two parts: 1) Double-Dispatch and 2) Domain Events. Since this wiki is all about domain events with BlingBag, I'll let you read about Double-Dispatch on your own and stick to the subject at hand. So, consider the following POCO class:
9 |
10 | ```csharp
11 | public class Account
12 | {
13 | public string Name { get; set; }
14 | public long Id { get; set; }
15 | public string EmailAddress { get; set; }
16 | }
17 | ```
18 |
19 | The above POCO is how all of my domain entities used to look. It's clean, but boring... this class does absolutely nothing. Before I met domain events, I would have created any number of domain "services" that performed actions on this Account class. The problem with this is that, in order to read the code and decypher what the Account does, you have to go service fishing and search for all the services that touch Account. It's a bit of a shame that we have such a clean code base, but one that expresses very little of the actual domain.
20 |
21 | Now, let's add some behavior. Our imaginary business has passed down a new requirement from on high:
22 | "As an account, I can change my name."
23 |
24 | So, consider the same POCO class with a bit of behavior:
25 |
26 | ```csharp
27 | public class Account
28 | {
29 | public string Name { get; private set; }
30 | public long Id { get; set; }
31 | public string EmailAddress { get; set; }
32 |
33 | public void ChangeName(string newName)
34 | {
35 | Name = newName;
36 | }
37 | }
38 | ```
39 |
40 | This is great. We're starting to make our Account entity a little more interesting. But, we have done very little and are pretty restricted to what we can actually do. But we still have three more pieces of the requirement to implement (found in a pencil-written footnote):
41 |
42 | When account name changes...
43 | - account should be saved to the database.
44 | - should email the account owner notifying of the change
45 | - should log the change
46 |
47 | How can we do all that from inside a POCO domain entity? Well, the answer is that you can't (or shouldn't). BUT, what you CAN do is send out a signal to the rest of the domain that the name has changed and allow the domain to respond to the signal.
48 |
49 | So, consider the same POCO, now equipped with BlingBag:
50 |
51 | ```csharp
52 | public class Account
53 | {
54 | public string Name { get; private set; }
55 | public long Id { get; set; }
56 | public string EmailAddress { get; set; }
57 |
58 | public event Blinger NotifyObservers;
59 |
60 | public void ChangeName(string newName)
61 | {
62 | var oldName = Name;
63 | Name = newName;
64 | NotifyObservers(new TheNameChanged(this, oldName, newName));
65 | }
66 | }
67 | ```
68 |
69 | ## Behavior-Rich Domain Model - Blingin!
70 | That's more like it! Now, our domain entity has behavior that expresses the requirements of the business. At this point, any number of event handlers (observers) can respond to the TheNameChanged "event". To fulfill our client's requirements, here are some possible event handlers:
71 |
72 | * UpdateTheAccountInTheDatabaseAfterNameChange
73 | * EmailAccountOwnerAfterNameChange
74 | * LogThatAccountNameWasChanged
75 |
76 | For more information on how to install, implement or use BlingBag, [check out the wiki](BlingBag/wiki/home).
77 |
78 | For sample code, check out the [sample app in the source code](https://github.com/bsommardahl/BlingBag/tree/master/src/BlingBag.SampleConsoleApp).
--------------------------------------------------------------------------------
/src/BlingBag.SampleConsoleApp/BlingBag.SampleConsoleApp.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | x86
6 | 8.0.30703
7 | 2.0
8 | {8F0C85B3-A583-4851-AE74-C84EA7B22979}
9 | Exe
10 | Properties
11 | BlingBag.SampleConsoleApp
12 | BlingBag.SampleConsoleApp
13 | v4.5
14 |
15 |
16 | 512
17 |
18 |
19 | x86
20 | true
21 | full
22 | false
23 | bin\Debug\
24 | DEBUG;TRACE
25 | prompt
26 | 4
27 | false
28 |
29 |
30 | x86
31 | pdbonly
32 | true
33 | bin\Release\
34 | TRACE
35 | prompt
36 | 4
37 | false
38 |
39 |
40 |
41 | False
42 | ..\..\lib\structuremap.2.6.4.1\lib\net40\StructureMap.dll
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
72 | BlingBag
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
88 |
--------------------------------------------------------------------------------
/src/BlingBag.Specs/BlingBag.Specs.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | AnyCPU
6 | 8.0.30703
7 | 2.0
8 | {11813EB6-C1E1-4475-8D72-E82305625703}
9 | Library
10 | Properties
11 | BlingBag.Specs
12 | BlingBag.Specs
13 | v4.5
14 | 512
15 |
16 |
17 |
18 | true
19 | full
20 | false
21 | bin\Debug\
22 | DEBUG;TRACE
23 | prompt
24 | 4
25 | false
26 |
27 |
28 | pdbonly
29 | true
30 | bin\Release\
31 | TRACE
32 | prompt
33 | 4
34 | false
35 |
36 |
37 |
38 | False
39 | ..\..\lib\Machine.Specifications.0.7.0\lib\net45\Machine.Specifications.dll
40 |
41 |
42 | False
43 | ..\..\lib\Machine.Specifications.0.7.0\lib\net45\Machine.Specifications.Clr4.dll
44 |
45 |
46 | ..\..\lib\Machine.Specifications.Should.0.7.2\lib\net45\Machine.Specifications.Should.dll
47 |
48 |
49 | False
50 | ..\..\lib\Moq.4.2.1507.0118\lib\net40\Moq.dll
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | {3706AACA-DFF6-470B-BAEC-FFCA79DCEE68}
81 | BlingBag
82 |
83 |
84 |
85 |
92 |
--------------------------------------------------------------------------------
/lib/Machine.Specifications.0.7.0/tools/history.txt:
--------------------------------------------------------------------------------
1 | Machine.Specifications 0.7.0
2 | -----------------------------
3 | - Machine.Specifications.Should has been moved to seperate repository and nuget.
4 |
5 | Machine.Specifications 0.6.2
6 | -----------------------------
7 | - Enable support for internal specs
8 | - Enable support for private nested specs
9 |
10 | Machine.Specifications 0.6.1
11 | -----------------------------
12 | - Nuget package adds proper references for .NET 4.0 and 4.5
13 | - Nuget package excludes sources
14 |
15 | Machine.Specifications 0.6.0
16 | -----------------------------
17 | - Should Extension Methods are moved into own assembly which simplifies things for people using other assertion libraries.
18 | - DelegateUsageAttribute is deprecated and will be remove in next version use new *DelegateAttribute types for custom delegates
19 | - Dropped support for Gallio
20 | - Resharper 8.1 support
21 | - DotCover 2.6 support
22 |
23 | Machine.Specifications 0.5.18
24 | -----------------------------
25 | - The zip package looks just like the NuGet package, minus NuGet-specific files
26 |
27 | Machine.Specifications 0.5.17
28 | -----------------------------
29 | - This version was accidentally released as the signed version only. It is equal
30 | to 0.5.16 unsigned.
31 |
32 | Machine.Specifications 0.5.16
33 | -----------------------------
34 | - Capturing standard out, standard error and trace streams in ReSharper 8
35 | (7 does this for us) and the console runners. Output is added to the test result
36 | XML/HTML. (#158)
37 | - Some fixes for behaviors in ReSharper (#155)
38 |
39 | Machine.Specifications 0.5.15
40 | -----------------------------
41 | Fixed an issue with running two spec assemblies: When the first one fails and
42 | the second one succeeds mspec.exe reported success. I needed to introduce a
43 | breaking change in the runner, so older versions are not compatible with 0.5.15.
44 | Update your ReSharper runners when upgrading to 0.5.15!
45 |
46 | Machine.Specifications 0.5.14
47 | -----------------------------
48 | - Closed #146: MSpec doesn't fail when Machine.Specifications cannot be found for
49 | a spec assembly. Can be useful if you want to target mspec.exe to a NUnit
50 | assembly, which is now a no-op.
51 | - Closed #151: Fixed MSpec slowness with ReSharper 8.
52 |
53 | Machine.Specifications 0.5.12
54 | -----------------------------
55 | - ReSharper 8 support
56 | - dotCover 2.5 support by Alexander Mikhailov
57 | - Documented --filters parameter for mspec.exe by Pieter Germishuys
58 | - Fix for TeamCity integration by James Crowley
59 |
60 | Machine.Specifications 0.5.11
61 | -----------------------------
62 |
63 | - Console output (mspec.exe) is now colored by default. You can disable colored
64 | output with the --no-color switch
65 | - Added progress output for the console runner (--progress switch)
66 | - The console runner now prints a list of failed specifications at the end of
67 | the test run (for silent, progress and verbose reporting options)
68 | - Support for custom delegates (i.e. you can replace Establish, Because, It,
69 | Cleanup, Behaves_like) with your own versions as long as the delegate signatures
70 | match. Please note that this currently only supported for console and
71 | TestDriven.Net runners. ReSharper won't find your context/specs if you use
72 | custom delegates. See Machine.Specifications.Example.CustomDelegates for an
73 | example. -- Thanks Jonathan Dickinson!
74 | - Fixed an issue with the ReSharper runner and generic Behaviors like
75 | Behaves_like> a_blah_blah;
76 | - Improved double-click navigation for behavior specifications in ReSharper
77 | - Dropped support for ReSharper 6.0
78 | - Fixed bug #17 which caused ReSharper to run IAssemblyContexts for each
79 | specification in an assembly (now the behavior is the same as with the console
80 | runner - running them once per assembly)
81 | - Matt Ellis contributed code that allows you to filter for "unit test usages"
82 | in ReSharper -- thank you!
83 |
84 | Machine.Specifications 0.5.10
85 | -----------------------------
86 |
87 | - ReSharper 7.1 support
88 | - Various fixes for ReSharper:
89 | - Retrieving Subject from outer class
90 | - Context sort order
91 | - Unimplemented specs are being reported as inconclusive
92 |
93 | Machine.Specifications 0.5.9
94 | ----------------------------
95 |
96 | - Removed ReSharper runners for ReSharper 4.1, 4.5 and 5.0
97 | - Added runner for dotCover 2.1
98 | - Updated runner for Gallio 3.4
99 |
100 | Machine.Specifications 0.5.8
101 | ----------------------------
102 |
103 | - ReSharper 7.0 runner for RTM
104 | The installer batches now copy the plugin to a folder that's shared between
105 | Visual Studio versions, i.e. install for both VS 2010 and VS 2012 at the same
106 | time
107 | - Some fixes for ReSharper not picking up TagsAttribute correctly
108 | - New extension method `ShouldBeLike` to test multiple object properties at once
109 | using an anonymous object.
110 | Might be useful for DTOs, we have some samples here: http://bit.ly/Op7tmP
111 |
112 | Machine.Specifications 0.5.7
113 | ----------------------------
114 |
115 | - Updated ReSharper 7.0 EAP runner (it's the same as in the prerelease
116 | packages)
117 | - Added a new runner for dotCover 2.0 EAP
118 | - Added a new command line switch, --no-teamcity-autodetect, to disable
119 | TeamCity autodetection in certain scenarios (http://bit.ly/KrOqIh)
120 | - Added code snippets for VS to the repository (http://bit.ly/KrOrMi)
121 |
122 | Machine.Specifications 0.5.6
123 | ----------------------------
124 |
125 | - Fixes for the ReSharper runner:
126 | Our internal unit test data structures caused the runner to silently break on
127 | renames. Corrected contexts with [Tags("foo")]; besides "foo", they also got the
128 | ReSharper category of "object".
129 |
130 | - New ShouldMatch extension method allowing for custom assertions with a
131 | Func. Thanks Tomas Ekeli!
132 |
133 | Machine.Specifications 0.5.5
134 | ----------------------------
135 |
136 | - For CLR4 projects, there are new extension methods in the M.S.Clr4 assembly
137 | that should make testing Task easier. Thanks Albert Weinert!
138 |
139 | - Updated Gallio Adapter, works against Gallio 3.3.454. Thanks Niels Hanberg!
140 |
141 | - ReSharper 6.1 templates for MSpec's delegates - see Misc\*.DotSettings in the
142 | repository. I wrote a blog post some time ago how to use them,
143 | http://bit.ly/xRZf2s
144 | Thanks @sksbrg!
145 |
146 | - Runner for the current ReSharper 7.0 EAP for VS 11
147 | Thanks Alexander Zeitler!
148 |
149 | - Updated result supplementer for Selenium WebDriver. An example:
150 | http://bit.ly/A48A2I
151 |
152 | - Made AssertComparer public, it should be easier to write custom Should*
153 | extension methods now.
154 |
--------------------------------------------------------------------------------
/lib/Machine.Specifications.0.9.3/tools/history.txt:
--------------------------------------------------------------------------------
1 | Machine.Specifications 0.9.3
2 | -----------------------------
3 | - Fixed #170: Exceptions in Cleanup are now reported by failing the test. Previously these exceptions were swallowed.
4 |
5 | Machine.Specifications 0.9.2
6 | -----------------------------
7 | - Fixed #278 broken shadow copy
8 |
9 | Machine.Specifications 0.9.1
10 | -----------------------------
11 | - Fixed #255 to re-enable capture output feature.
12 |
13 | Machine.Specifications 0.9.0
14 | -----------------------------
15 | - Split out of ReSharper, dotCover and TDNet integration
16 | - Split out console runner and reporting
17 | - Version independent running of specs
18 |
19 | Machine.Specifications 0.8.3
20 | -----------------------------
21 | - AppVeyor support for mspec.exe with --appveyor,
22 | uses AutoDetection by default by inspecting the APPVEYOR_API_URL environment variable,
23 | detection can be disabled with --no-appveyor-autodetect
24 | - Resharper Extension Gallery support for 8.0/8.1/8.2 and dotCover 2.6/2.7
25 | Make sure you uninstall all previously Machine.Specifications plugins before installing the plugin
26 |
27 | Machine.Specifications 0.8.2
28 | -----------------------------
29 | - Fixes specs not being loaded into Resharper
30 | - Fixes specs only temporarily shown when base class has tags attribute
31 |
32 | Machine.Specifications 0.8.1
33 | -----------------------------
34 | - Support subject attribute on derived and base class in Resharper Runner
35 |
36 | Machine.Specifications 0.8.0
37 | -----------------------------
38 | - Resharper 8.2 support
39 | - dotCover 2.7 support
40 | - dotCover 2.0 to 2.2 support dropped
41 | - Resharper 6.0 to 7.0 support dropped
42 |
43 | Machine.Specifications 0.7.0
44 | -----------------------------
45 | - Machine.Specifications.Should has been moved to seperate repository and nuget.
46 |
47 | Machine.Specifications 0.6.2
48 | -----------------------------
49 | - Enable support for internal specs
50 | - Enable support for private nested specs
51 |
52 | Machine.Specifications 0.6.1
53 | -----------------------------
54 | - Nuget package adds proper references for .NET 4.0 and 4.5
55 | - Nuget package excludes sources
56 |
57 | Machine.Specifications 0.6.0
58 | -----------------------------
59 | - Should Extension Methods are moved into own assembly which simplifies things for people using other assertion libraries.
60 | - DelegateUsageAttribute is deprecated and will be remove in next version use new *DelegateAttribute types for custom delegates
61 | - Dropped support for Gallio
62 | - Resharper 8.1 support
63 | - DotCover 2.6 support
64 |
65 | Machine.Specifications 0.5.18
66 | -----------------------------
67 | - The zip package looks just like the NuGet package, minus NuGet-specific files
68 |
69 | Machine.Specifications 0.5.17
70 | -----------------------------
71 | - This version was accidentally released as the signed version only. It is equal
72 | to 0.5.16 unsigned.
73 |
74 | Machine.Specifications 0.5.16
75 | -----------------------------
76 | - Capturing standard out, standard error and trace streams in ReSharper 8
77 | (7 does this for us) and the console runners. Output is added to the test result
78 | XML/HTML. (#158)
79 | - Some fixes for behaviors in ReSharper (#155)
80 |
81 | Machine.Specifications 0.5.15
82 | -----------------------------
83 | Fixed an issue with running two spec assemblies: When the first one fails and
84 | the second one succeeds mspec.exe reported success. I needed to introduce a
85 | breaking change in the runner, so older versions are not compatible with 0.5.15.
86 | Update your ReSharper runners when upgrading to 0.5.15!
87 |
88 | Machine.Specifications 0.5.14
89 | -----------------------------
90 | - Closed #146: MSpec doesn't fail when Machine.Specifications cannot be found for
91 | a spec assembly. Can be useful if you want to target mspec.exe to a NUnit
92 | assembly, which is now a no-op.
93 | - Closed #151: Fixed MSpec slowness with ReSharper 8.
94 |
95 | Machine.Specifications 0.5.12
96 | -----------------------------
97 | - ReSharper 8 support
98 | - dotCover 2.5 support by Alexander Mikhailov
99 | - Documented --filters parameter for mspec.exe by Pieter Germishuys
100 | - Fix for TeamCity integration by James Crowley
101 |
102 | Machine.Specifications 0.5.11
103 | -----------------------------
104 |
105 | - Console output (mspec.exe) is now colored by default. You can disable colored
106 | output with the --no-color switch
107 | - Added progress output for the console runner (--progress switch)
108 | - The console runner now prints a list of failed specifications at the end of
109 | the test run (for silent, progress and verbose reporting options)
110 | - Support for custom delegates (i.e. you can replace Establish, Because, It,
111 | Cleanup, Behaves_like) with your own versions as long as the delegate signatures
112 | match. Please note that this currently only supported for console and
113 | TestDriven.Net runners. ReSharper won't find your context/specs if you use
114 | custom delegates. See Machine.Specifications.Example.CustomDelegates for an
115 | example. -- Thanks Jonathan Dickinson!
116 | - Fixed an issue with the ReSharper runner and generic Behaviors like
117 | Behaves_like> a_blah_blah;
118 | - Improved double-click navigation for behavior specifications in ReSharper
119 | - Dropped support for ReSharper 6.0
120 | - Fixed bug #17 which caused ReSharper to run IAssemblyContexts for each
121 | specification in an assembly (now the behavior is the same as with the console
122 | runner - running them once per assembly)
123 | - Matt Ellis contributed code that allows you to filter for "unit test usages"
124 | in ReSharper -- thank you!
125 |
126 | Machine.Specifications 0.5.10
127 | -----------------------------
128 |
129 | - ReSharper 7.1 support
130 | - Various fixes for ReSharper:
131 | - Retrieving Subject from outer class
132 | - Context sort order
133 | - Unimplemented specs are being reported as inconclusive
134 |
135 | Machine.Specifications 0.5.9
136 | ----------------------------
137 |
138 | - Removed ReSharper runners for ReSharper 4.1, 4.5 and 5.0
139 | - Added runner for dotCover 2.1
140 | - Updated runner for Gallio 3.4
141 |
142 | Machine.Specifications 0.5.8
143 | ----------------------------
144 |
145 | - ReSharper 7.0 runner for RTM
146 | The installer batches now copy the plugin to a folder that's shared between
147 | Visual Studio versions, i.e. install for both VS 2010 and VS 2012 at the same
148 | time
149 | - Some fixes for ReSharper not picking up TagsAttribute correctly
150 | - New extension method `ShouldBeLike` to test multiple object properties at once
151 | using an anonymous object.
152 | Might be useful for DTOs, we have some samples here: http://bit.ly/Op7tmP
153 |
154 | Machine.Specifications 0.5.7
155 | ----------------------------
156 |
157 | - Updated ReSharper 7.0 EAP runner (it's the same as in the prerelease
158 | packages)
159 | - Added a new runner for dotCover 2.0 EAP
160 | - Added a new command line switch, --no-teamcity-autodetect, to disable
161 | TeamCity autodetection in certain scenarios (http://bit.ly/KrOqIh)
162 | - Added code snippets for VS to the repository (http://bit.ly/KrOrMi)
163 |
164 | Machine.Specifications 0.5.6
165 | ----------------------------
166 |
167 | - Fixes for the ReSharper runner:
168 | Our internal unit test data structures caused the runner to silently break on
169 | renames. Corrected contexts with [Tags("foo")]; besides "foo", they also got the
170 | ReSharper category of "object".
171 |
172 | - New ShouldMatch extension method allowing for custom assertions with a
173 | Func. Thanks Tomas Ekeli!
174 |
175 | Machine.Specifications 0.5.5
176 | ----------------------------
177 |
178 | - For CLR4 projects, there are new extension methods in the M.S.Clr4 assembly
179 | that should make testing Task easier. Thanks Albert Weinert!
180 |
181 | - Updated Gallio Adapter, works against Gallio 3.3.454. Thanks Niels Hanberg!
182 |
183 | - ReSharper 6.1 templates for MSpec's delegates - see Misc\*.DotSettings in the
184 | repository. I wrote a blog post some time ago how to use them,
185 | http://bit.ly/xRZf2s
186 | Thanks @sksbrg!
187 |
188 | - Runner for the current ReSharper 7.0 EAP for VS 11
189 | Thanks Alexander Zeitler!
190 |
191 | - Updated result supplementer for Selenium WebDriver. An example:
192 | http://bit.ly/A48A2I
193 |
194 | - Made AssertComparer public, it should be easier to write custom Should*
195 | extension methods now.
196 |
--------------------------------------------------------------------------------
/lib/NHibernate.3.3.1.4000/nhibernate-configuration.xsd:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | -- This schema was automatically generated by Syntext Dtd2Schema and changed for NH use --
5 | -- conversion tool (from file: hibernate-configuration-3.0.dtd) --
6 | -- Copyright (C) 2002, 2003 Syntext Inc. See http://www.syntext.com for updates. --
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | There are 3 default short-cut values
17 | - lcg : default for .NET2.0 and higher.
18 | - codedom : CodeDOM-based bytecode provider (mostly for .NET1.1).
19 | - null : Disable the reflection optimization completely.
20 | In addition you can specify the AssemblyQualifiedName of your custom bytecode-provider (implementation of IBytecodeProvider).
21 | Note: the bytecode-provider will be tooks in account only when specified in the app.config or web.config.
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | There are 3 possible combinations of mapping attributes
57 | 1 - resource & assembly: NHibernate will read the mapping resource from the specified assembly
58 | 2 - file only: NHibernate will read the mapping from the file.
59 | 3 - assembly only: NHibernate will find all the resources ending in hbm.xml from the assembly.
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 |
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
169 |
170 |
171 |
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 |
211 |
212 |
213 |
214 |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
--------------------------------------------------------------------------------