Click here to Skip to main content
Click here to Skip to main content
Articles » Database » Database » General » Downloads
 
Add your own
alternative version

Relationship Oriented Programming - The IDE plus More on Agile Project Management

, 12 Mar 2012 CPOL
An Integrated Development Environment (IDE) for the Relationship Oriented Programming Tool.
ROP_IDE.zip
Clifton.Collections.Generic
bin
Debug
x86
Debug
obj
Debug
TempPE
x86
Debug
TempPE
Properties
Clifton.Data
bin
Debug
x86
Debug
obj
Debug
TempPE
x86
Debug
TempPE
Properties
Clifton.Services
bin
Debug
Release
obj
Debug
TempPE
Properties
Clifton.Tools.Data
articles
raw Serializer
RawSerializer
codepaths.png
codepaths.vsd
rawSerializer1.PNG
rawSerializer2.PNG
rawSerializer3.PNG
bin
Debug
MemoryLeakTesting
Release
x86
Debug
MemoryLeakTesting
Release
Xml Documentation
Xml Documentation
obj
Debug
TempPE
x86
Debug
Refactor
TempPE
UnitTests
Clifton.Tools.Strings
bin
Debug
Release
Xml Documentation
obj
Debug
Refactor
TempPE
Xml Documentation
TempPE
UnitTests
Clifton.Windows.Forms
bin
Debug
Release
obj
Debug
Refactor
TempPE
Properties
Resources
tv_minus.bmp
tv_plus.bmp
XmlTree
DataSetDataProvider
bin
Debug
Release
obj
Debug
TempPE
Properties
IDE
bin
Debug
devexpress
entityEditor.myxaml
graph.myxaml
ide.myxaml
login.myxaml
modelEditor.myxaml
orphans.myxaml
SelectApplicationEntity.myxaml
SelectModelEntity.myxaml
dotnet
ide.myxaml
modelEditor.myxaml
gapma.dataset
graph.png
IDE.exe
IDE.vshost.exe
IDE.vshost.exe.manifest
rop.model
Release
GenericTreeSupport
obj
Debug
TempPE
x86
Debug
TempPE
Properties
Settings.settings
Interfaces.UI
bin
Debug
Release
obj
Debug
TempPE
Properties
Myxaml 2.0
MyXaml.Core
bin
Debug
Release
Xml Documentation
doc
MyXamlCoreUnitTests
obj
Debug
Refactor
TempPE
Release
Xml Documentation
TempPE
MyXaml.WinForms
bin
Debug
Release
Xml Documentation
obj
Debug
Refactor
TempPE
Xml Documentation
TempPE
ROPLib
bin
Debug
Release
obj
Debug
Refactor
TempPE
Properties
ROPLib.csproj.user
ROPLib.Data
bin
Debug
Release
obj
Debug
TempPE
Properties
ROPLib.Graphing
bin
Debug
obj
Debug
TempPE
Properties
ROPLib.Interfaces
bin
Debug
Release
obj
Debug
TempPE
Properties
ROPLib.RendererInterfaces
bin
Debug
Release
obj
Debug
TempPE
Properties
ROPLib.Reporting
bin
Debug
Release
x86
Debug
obj
Debug
TempPE
x86
Debug
TempPE
Properties
ROPLib.UIEvents
bin
Debug
Release
obj
Debug
TempPE
Properties
ROPLib.UIRendering
bin
Debug
Release
obj
Debug
TempPE
Properties
SQLLiteDataProvider
bin
Debug
Release
obj
Debug
TempPE
Properties
UI.DotNet
bin
Debug
Release
obj
Debug
TempPE
Properties
UI.DX
bin
Debug
Release
obj
Debug
TempPE
Properties
licenses.licx
UnitTest
bin
Debug
Release
Xml Documentation
obj
Debug
Refactor
TempPE
Xml Documentation
TempPE
UnitTest.csproj.user
XTreeInterfaces
bin
Debug
Release
obj
Debug
TempPE
Properties
/*
(c) 2005, Marc Clifton
All Rights Reserved
 
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list
of conditions and the following disclaimer. 

Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution. 

Neither the name of the Marc Clifton, "Advanced Unit Test", "AUT", nor the names
of its contributors may be used to endorse or promote products derived from this
software without specific prior written permission. 

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

using System;
using System.Reflection;

namespace Vts.UnitTest
{
	/// <summary>
	/// Provides functionality to assert the state of objects
	/// </summary>
	public abstract class ObjectAssertion
	{
		#region Methods

		#region Compare

		/// <summary>
		/// Compares all public value properties of two objects
		/// </summary>
		/// <param name="expected">object with expected values</param>
		/// <param name="actual">object with actual values</param>
		public static void Compare(object expected, object actual) 
		{
			Compare(expected, actual, 1, false, "");
		}

		/// <summary>
		/// Compares all public value properties of two objects
		/// </summary>
		/// <param name="expected">object with expected values</param>
		/// <param name="actual">object with actual values</param>
		/// <param name="message">a message in case the comparison fails</param>
		public static void Compare(object expected, object actual, string message) 
		{
			Compare(expected, actual, 1, false, message);
		}

		/// <summary>
		/// Compares all public value properties of two objects down to the specified level
		/// </summary>
		/// <param name="expected">object with expected values</param>
		/// <param name="actual">object with actual values</param>
		/// <param name="level">specifies how many recursions on child objects should be processed</param>
		/// <param name="message">a message in case the comparison fails</param>
		public static void Compare(object expected, object actual, int level, string message) 
		{
			Compare(expected, actual, level, false, message);
		}

		/// <summary>
		/// Compares all public properties of two objects up to the specified level
		/// </summary>
		/// <param name="expected">object with expected values</param>
		/// <param name="actual">object with actual values</param>
		/// <param name="level">specifies how many recursions on child objects should be processed</param>
		/// <param name="compareReferences">if <i>true</i> object references have to be equal as well</param>
		/// <param name="message">a message in case the comparison fails</param>
		public static void Compare(object expected, object actual, int level, bool compareReferences, string message) 
		{
			if(expected.GetType() != actual.GetType()) throw new AssertionException("Objects not of same type");

			PropertyInfo[] properties = expected.GetType().GetProperties();
			foreach(PropertyInfo property in properties) 
			{
				object expectedValue = property.GetValue(expected, null);
				object actualValue = property.GetValue(actual, null);

				if(expectedValue == null && actualValue == null) continue;
				
				if(expectedValue is ValueType || expectedValue is string || compareReferences) 
				{
					string msg = string.Format("{3}\nCompare failed at {0}: expected value = {1}, actual value = {2}",
						property.Name, expectedValue, actualValue, message);

					if(expectedValue == null) Assertion.Fail(msg);
					if(actualValue == null) Assertion.Fail(msg);
					if(!expectedValue.Equals(actualValue)) Assertion.Fail(msg);
				} 
				else 
				{
					if(level > 1)
						ObjectAssertion.Compare(expectedValue, actualValue, --level, compareReferences, message);
				}
			}
		}

		#endregion

		#endregion

		#region Fields


		#endregion
	}
}

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

Share

About the Author

Marc Clifton

United States United States
Marc is the creator of two open source projects, MyXaml, a declarative (XML) instantiation engine and the Advanced Unit Testing framework, and Interacx, a commercial n-tier RAD application suite.  Visit his website, www.marcclifton.com, where you will find many of his articles and his blog.
 
Marc lives in Philmont, NY.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150129.1 | Last Updated 12 Mar 2012
Article Copyright 2012 by Marc Clifton
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid