Commit Graph

246 Commits

Author SHA1 Message Date
Markus Ewald
b37c4a757c MultiDictionary wasn't firing 'removed' events when an entire set of values is replaced - fixed, but not unit-tested yet; added more unit tests to the ObservableSet class; ObservableSet was not firing the 'added' event - fixed
git-svn-id: file:///srv/devel/repo-conversion/nusu@260 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-03-02 21:05:05 +00:00
Markus Ewald
0195b34289 The Count property of the multi dictionary now returns either the value count of the number of unique keys depending on which interface it is called from
git-svn-id: file:///srv/devel/repo-conversion/nusu@259 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-03-01 14:48:53 +00:00
Markus Ewald
ca373846aa Excluded ObservableSet and ReadOnlySet implementations from Xbox 360 and Windows Phone 7 builds because these platforms don't support the ISet interface
git-svn-id: file:///srv/devel/repo-conversion/nusu@258 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-03-01 14:39:50 +00:00
Markus Ewald
13579c5162 Fixed unit tests that were failing due to the introdcution of the ItemReplaced event; removed NotifyCollectionResetEventArgs if no specialized collections are available
git-svn-id: file:///srv/devel/repo-conversion/nusu@257 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-03-01 14:05:11 +00:00
Markus Ewald
2d04ad7b49 Added ObservableSet and ReadOnlySet wrappers (no unit tests yet)
git-svn-id: file:///srv/devel/repo-conversion/nusu@256 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-03-01 13:51:04 +00:00
Markus Ewald
5e4de7f027 Added ItemReplaced() to IObservableCollection
git-svn-id: file:///srv/devel/repo-conversion/nusu@255 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-03-01 12:52:12 +00:00
Markus Ewald
75552b5150 All unit test classes are now internal; updated copyright statement for the year 2012; added hulls for the upcoming ObservableSet<> and ReadOnlySet<> classes; switched generic parameter naming convention TSomething instead of SomethingType
git-svn-id: file:///srv/devel/repo-conversion/nusu@252 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-29 16:27:43 +00:00
Markus Ewald
61c858cb1c CanGetProcessThreadForManagedThread() test now only runs on Windows systems; removed unused variable from expression tree cloner; removed unused variable from unit test of weak collection; fixed test issue parsing command lines relying on current platform being windows; removed unused variable from Semaphore class
git-svn-id: file:///srv/devel/repo-conversion/nusu@251 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-12 13:46:19 +00:00
Markus Ewald
48e016d956 Accidentally made two unit tests public - fixed
git-svn-id: file:///srv/devel/repo-conversion/nusu@250 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-09 13:56:28 +00:00
Markus Ewald
0fdad7c33d There was still an issue with the cloners: private fields in base classes were not cloned properly - problem fixed and unit tests added to prevent regressions
git-svn-id: file:///srv/devel/repo-conversion/nusu@249 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 22:18:36 +00:00
Markus Ewald
0290444140 Fixed a bug in the cloners: if a class has properties with only a setter or only a getter, the property-based clones now ignore that property; added a unit test that verifies types without a default constructor can be cloned as well
git-svn-id: file:///srv/devel/repo-conversion/nusu@248 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 19:26:05 +00:00
Markus Ewald
48e1674912 Property-based shallow clones of value types are now also working correctly in the expression tree cloner
git-svn-id: file:///srv/devel/repo-conversion/nusu@247 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 18:47:45 +00:00
Markus Ewald
d091061baa ExpressionTreeCloner now can create shallow field-based clones of objects without a default constructor (before this, only deep clones worked); search-and-replace fix - some comments referred to something called 'propertys'; all cloners now correctly handle being passed null values (a clone of 'null' is also 'null' per definition)
git-svn-id: file:///srv/devel/repo-conversion/nusu@246 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 17:38:20 +00:00
Markus Ewald
15300676ba Streamlined the cloning API: whether a property-based clone is performed is no longer indicated through a parameter, but by calling the appropriate method
git-svn-id: file:///srv/devel/repo-conversion/nusu@245 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 17:13:08 +00:00
Markus Ewald
0f2bb60ea5 Fully implemented property-based cloning for the expression tree cloner
git-svn-id: file:///srv/devel/repo-conversion/nusu@244 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 16:51:58 +00:00
Markus Ewald
db8c93eabd All cloners are now able to clone objects without default constructors; began work on a property-based expression tree cloner
git-svn-id: file:///srv/devel/repo-conversion/nusu@243 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 15:20:39 +00:00
Markus Ewald
91da3679a8 Removed a dead variable when cloning arrays
git-svn-id: file:///srv/devel/repo-conversion/nusu@242 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 12:47:35 +00:00
Markus Ewald
cd6cec42d3 Expression tree cloner can now also create shallow field based clones
git-svn-id: file:///srv/devel/repo-conversion/nusu@241 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 12:17:35 +00:00
Markus Ewald
e7d1c9720b Arrays of reference types can now be cloned, too - deep expression tree cloner is finished!
git-svn-id: file:///srv/devel/repo-conversion/nusu@240 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 11:12:44 +00:00
Markus Ewald
e57140579c Expression tree cloner now clones nested arrays in any depth (inline since deriving from an array is not possible, so it's pretty darn fast!), only scenario left open now is arrays of reference types
git-svn-id: file:///srv/devel/repo-conversion/nusu@239 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-08 11:05:07 +00:00
Markus Ewald
b2e484673d Added more comments and and done some minor refactoring
git-svn-id: file:///srv/devel/repo-conversion/nusu@238 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-06 12:30:59 +00:00
Markus Ewald
28998dbdcf Half way there cloning arrays of complex types - the array copy loop is built and executed correctly
git-svn-id: file:///srv/devel/repo-conversion/nusu@237 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-06 11:46:21 +00:00
Markus Ewald
40231aa15c My code for creating new arrays was absurdly overkill -- there's a simple Linq expression that does everything in a one-liner, faster and safer
git-svn-id: file:///srv/devel/repo-conversion/nusu@236 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-06 09:50:15 +00:00
Markus Ewald
f5c282e840 Got rid of some unnecessary downcasts for the expression tree cloner
git-svn-id: file:///srv/devel/repo-conversion/nusu@235 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-06 09:04:10 +00:00
Markus Ewald
62d0c6611c Expression tree cloner now transfers the fields of structures (of any nesting level)
git-svn-id: file:///srv/devel/repo-conversion/nusu@234 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-06 08:43:23 +00:00
Markus Ewald
3267e399ee Expression tree cloner now clones nested reference types
git-svn-id: file:///srv/devel/repo-conversion/nusu@233 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-05 13:12:18 +00:00
Markus Ewald
79063f59c1 Expression tree cloner can now clone multi-dimensional arrays
git-svn-id: file:///srv/devel/repo-conversion/nusu@232 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-04 14:22:59 +00:00
Markus Ewald
1307976597 Expression tree cloner is now able to clone arrays of primitive types
git-svn-id: file:///srv/devel/repo-conversion/nusu@231 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-03 20:39:07 +00:00
Markus Ewald
4743b5d056 Expression tree cloner now is able to clone complex types (non-recursively, at the moment)
git-svn-id: file:///srv/devel/repo-conversion/nusu@230 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-03 18:06:46 +00:00
Markus Ewald
776a0749fd Expression tree cloner can now clone primitive types
git-svn-id: file:///srv/devel/repo-conversion/nusu@229 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-03 16:10:21 +00:00
Markus Ewald
976b1ddba5 Cloners now offer their methods as static members for easy access in non-service oriented applications; began implementing the expression tree cloner
git-svn-id: file:///srv/devel/repo-conversion/nusu@228 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-03 14:49:31 +00:00
Markus Ewald
961f56157e Added a cloner that uses a binary serializer to clone objects; converted unit tests for reflection cloner into a shared base class so they can be applied to the serialization-based cloner as well
git-svn-id: file:///srv/devel/repo-conversion/nusu@227 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-03 12:18:37 +00:00
Markus Ewald
7e61e27050 Reflection-based cloner no longer fails when cloning a complex type containing string members (since strings aren't primitive types, the cloner attempted to construct a string via its default constructor and then assign its members, which is nonsense)
git-svn-id: file:///srv/devel/repo-conversion/nusu@226 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-02 20:11:17 +00:00
Markus Ewald
7f7b9eff19 Reflection-based cloner now also clones arrays (including deep clones of array values if desired)
git-svn-id: file:///srv/devel/repo-conversion/nusu@225 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-02 17:59:34 +00:00
Markus Ewald
bc8e565f8f Fixed semaphore bug in AffineThreadPool when running on Windows
git-svn-id: file:///srv/devel/repo-conversion/nusu@224 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-02 00:20:32 +00:00
Markus Ewald
eb3083cf9e Fixed a compilation error when targeting Windows Phone; ChainStream now uses a params list for its constructor; added object cloning framework with support for deep and shallow cloning as well as cloning based on fields or properties
git-svn-id: file:///srv/devel/repo-conversion/nusu@223 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-01 22:45:15 +00:00
Markus Ewald
54d82e9659 AffineThreadPool now uses standard semaphores in Windows builds; command line parser is satisfied with an IList of arguments instead of requiring a concrete List instance; added NCrunch XML file to svn:ignore list
git-svn-id: file:///srv/devel/repo-conversion/nusu@222 d2e56fa2-650e-0410-a79f-9358c0239efd
2012-02-01 10:39:39 +00:00
Markus Ewald
1a215987ac ObservableCollection no longer derives from System.Collections.ObjectModel.Collection, thus it is a real ICollection that does not expose itself as an IList
git-svn-id: file:///srv/devel/repo-conversion/nusu@221 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-10-25 14:59:38 +00:00
Markus Ewald
a4000c106a Added an ObservableList class which is like the ObservableCollection, but allows indexed access
git-svn-id: file:///srv/devel/repo-conversion/nusu@220 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-08-24 11:33:22 +00:00
Markus Ewald
d3e055a37c Removed scheduling and tracking directories from the projects (these have been moved into a separate assembly)
git-svn-id: file:///srv/devel/repo-conversion/nusu@219 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-08-14 11:09:40 +00:00
Markus Ewald
eea74c8228 Moved all transaction-related code from Nuclex.Support into a new project (even though it's very carefully designed, it has proven to be rarely required and .NET 4.0 Tasks make it an almost redundant implementation)
git-svn-id: file:///srv/devel/repo-conversion/nusu@218 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-08-14 10:55:45 +00:00
Markus Ewald
b7c883ea8d Assigning null to a key in the MultiDictionary will not delete that key (this behavior is symmetric with the behavior of querying the values under a key where null indicates that the key doesn't exist - it also doesn't add any "secret tricks" because the normal Dictionary doesn't intersect this functionality of having an extra container between the key and the values)
git-svn-id: file:///srv/devel/repo-conversion/nusu@217 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-08-14 09:33:10 +00:00
Markus Ewald
a08939e914 Added INotifyCollectionChanged interface to ObservableCollection and ObservableDictionary; added a new dictionary type, the MultiDictionary which is equivalent to the C++ multimap<> class
git-svn-id: file:///srv/devel/repo-conversion/nusu@215 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-07-04 22:21:57 +00:00
Markus Ewald
aa5e4d12cc Upgraded unit tests to NMock 3.0
git-svn-id: file:///srv/devel/repo-conversion/nusu@214 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-03-08 20:36:43 +00:00
Markus Ewald
da61476a80 Assembly is now signed with a strong name key; minor cosmetic improvements
git-svn-id: file:///srv/devel/repo-conversion/nusu@213 d2e56fa2-650e-0410-a79f-9358c0239efd
2011-02-14 18:15:23 +00:00
Markus Ewald
eafb9e442b Fixed compilation error on Windows Phone 7 and Xbox 360 builds
git-svn-id: file:///srv/devel/repo-conversion/nusu@212 d2e56fa2-650e-0410-a79f-9358c0239efd
2010-12-24 01:32:14 +00:00
Markus Ewald
46cbc920b1 Removed some XNA 3.1 code paths; cleaned up constant usage in platform-specific code sections
git-svn-id: file:///srv/devel/repo-conversion/nusu@211 d2e56fa2-650e-0410-a79f-9358c0239efd
2010-12-24 01:02:56 +00:00
Markus Ewald
645148a751 Added methods for counting the number of bits set in integers
git-svn-id: file:///srv/devel/repo-conversion/nusu@210 d2e56fa2-650e-0410-a79f-9358c0239efd
2010-11-22 18:05:55 +00:00
Markus Ewald
22cea75a7a Turned many of the helper methods into extension methods
git-svn-id: file:///srv/devel/repo-conversion/nusu@209 d2e56fa2-650e-0410-a79f-9358c0239efd
2010-11-20 11:53:25 +00:00
Markus Ewald
d99137f0dd StringBuilderHelper is now a static class; WeakReference<T> no longer derives from WeakReference if compiled for Windows Phone 7 because this makes the Windows Phone emulator crash as soon as the WeakReference<T> is referenced - nearly identical functionality is provided with an implicit conversion operator
git-svn-id: file:///srv/devel/repo-conversion/nusu@207 d2e56fa2-650e-0410-a79f-9358c0239efd
2010-11-18 10:47:09 +00:00