2
// MonoMac.CFNetwork.Test.UnitTests.UnitTestDataSource
5
// Martin Baulig (martin.baulig@gmail.com)
7
// Copyright 2012 Xamarin Inc. (http://www.xamarin.com)
10
// Permission is hereby granted, free of charge, to any person obtaining
11
// a copy of this software and associated documentation files (the
12
// "Software"), to deal in the Software without restriction, including
13
// without limitation the rights to use, copy, modify, merge, publish,
14
// distribute, sublicense, and/or sell copies of the Software, and to
15
// permit persons to whom the Software is furnished to do so, subject to
16
// the following conditions:
18
// The above copyright notice and this permission notice shall be
19
// included in all copies or substantial portions of the Software.
21
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31
using System.Collections.Generic;
32
using MonoMac.Foundation;
33
using MonoMac.CoreText;
34
using MonoMac.CoreGraphics;
36
using AsyncTests.Framework;
38
namespace MonoMac.CFNetwork.Test.UnitTests {
40
[Register ("UnitTestDataSource")]
41
public class UnitTestDataSource : NSOutlineViewDataSource {
44
public UnitTestDataSource ()
49
public UnitTestDataSource (IntPtr handler)
56
root = AppDelegate.UnitTestDelegate.Root;
57
AppDelegate.UnitTestDelegate.ChangedEvent += (sender, e) => {
70
#region NSOutlineViewDataSource implementation
72
public override int GetChildrenCount (NSOutlineView outlineView, NSObject item)
74
ResultWrapper result = item != null ? (ResultWrapper)item : root;
75
return result != null ? result.Count : 0;
78
public override NSObject GetChild (NSOutlineView outlineView, int childIndex, NSObject ofItem)
80
var result = ofItem != null ? (ResultWrapper)ofItem : root;
81
return result.GetChild (childIndex);
84
public override bool ItemExpandable (NSOutlineView outlineView, NSObject item)
86
var result = item as ResultWrapper;
88
return result.HasChildren;
93
NSColor ColorForResult (TestResult result)
95
switch (result.Status) {
96
case TestStatus.Success:
98
case TestStatus.Error:
100
case TestStatus.Warning:
101
return NSColor.Brown;
107
string StateForResult (TestResult result)
109
switch (result.Status) {
110
case TestStatus.Success:
112
case TestStatus.Error:
114
case TestStatus.Warning:
121
public override NSObject GetObjectValue (NSOutlineView outlineView, NSTableColumn forTableColumn, NSObject byItem)
123
var wrapper = (ResultWrapper)byItem;
124
var tag = (ColumnTag)forTableColumn.DataCell.Tag;
126
var result = wrapper.Item as TestResult;
127
if (result == null) {
128
if (tag == ColumnTag.Name)
129
return (NSString)wrapper.Item.Name;
136
var label = new NSTextFieldCell (result.Name);
137
label.TextColor = ColorForResult (result);
138
label.Font = forTableColumn.DataCell.Font;
141
case ColumnTag.State:
142
// FIXME: NSAttributedString doesn't seem to work.
143
label = new NSTextFieldCell (StateForResult (result));
144
label.TextColor = ColorForResult (result);
145
label.Font = forTableColumn.DataCell.Font;
148
case ColumnTag.Count:
149
return (NSNumber)result.TotalSuccess;
151
case ColumnTag.Errors:
152
return (NSNumber)result.TotalErrors;
154
case ColumnTag.Warnings:
155
return (NSNumber)result.TotalWarnings;