2 - Does a static check in all classes derived from DependencyObject (fails if these checks fail):
3 * Must override GetKind.
4 * Must have a public empty constructor.
5 * Must have an internal constructor that takes 1 IntPtr argument.
6 - It will also list the size of all constructors that doesn't have a normal size, look out for (warnings, can be ignored):
7 * Constructors smaller than the normal size.
8 * Constructors with size similar to the normal size, but not exactly the same.
9 These constructors likely do not implement the required constructor pattern:
10 public ctor () : base (NativeMethods.class_name_new ())
11 internal ctor (IntPtr raw) : base (raw)
12 Normal size: 23 bytes for empty constructors, and 8 bytes for the IntPtr constructor.
15 - Creates a test program that for each class derived from DependencyObject:
17 * For each property, stores a value (if writable), gets the (stored if writable) value (if readable), and compares them (if both readable and writable).
18 * For nullable properties, tries to store both a null value as well as a nullable<type> value.
19 - Currently there's some output that can be ignored:
20 * The downloader has not been initialized, so there'll be a few of these:
21 ** (tester.exe:2038): WARNING **: downloader_set_function has never been called.
22 * The instantiated classes does not always make sense in unmanaged land, so we're getting these as well:
23 ** (tester.exe:2038): WARNING **: UIElement:getbounds has been called. The derived class <type> should have overridden it.