jeremylightsmith-fakeui 0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README ADDED
@@ -0,0 +1 @@
1
+ FakeUI
@@ -0,0 +1,25 @@
1
+ require 'spec/rake/spectask'
2
+
3
+ task :default => :spec
4
+
5
+ Spec::Rake::SpecTask.new(:spec) do |t|
6
+ t.spec_files = FileList['spec/**/*_spec.rb']
7
+ end
8
+
9
+ desc "generate a gem: in general, github should do this for you"
10
+ task :gem do
11
+ `rm -rf *.gem`
12
+ spec = eval(File.read(File.dirname(__FILE__) + "/fakeui.gemspec"))
13
+ expected_files = ['README', 'Rakefile', 'lib/**/*', 'spec/**/*'].map {|d| Dir.glob(d)}.flatten
14
+ unless spec.files.sort == expected_files.sort
15
+ raise "expected gemspec to be \n\t#{expected_files.sort.inspect}\n" +
16
+ "but was\n\t#{spec.files.sort.inspect}"
17
+ end
18
+ Gem::Builder.new(spec).build
19
+ end
20
+
21
+ desc "build and install gem"
22
+ task :install => :gem do
23
+ `sudo gem install *.gem`
24
+ end
25
+
@@ -0,0 +1,22 @@
1
+ # this file loads a fake ui, used for unit testing
2
+ require 'osx/cocoa' # this is used for constants and such, we should get rid of it for testing
3
+
4
+ require 'fakeui/outline_view'
5
+ require 'fakeui/tab_view'
6
+ require 'fakeui/table_view'
7
+ require 'fakeui/text_field'
8
+ require 'fakeui/text_view'
9
+ require 'fakeui/window'
10
+
11
+ # this should be mocked out in tests, if it's not, it should barf, like so...
12
+ module Kernel
13
+ def alert(message, options = {})
14
+ raise message
15
+ end
16
+ end
17
+
18
+ class Array
19
+ def to_range
20
+ self
21
+ end
22
+ end
@@ -0,0 +1,32 @@
1
+ module FakeUI
2
+ class OutlineView
3
+ def expandItem(item)
4
+ end
5
+
6
+ def reloadData
7
+ end
8
+
9
+ def setDataSource(data_source)
10
+ @data_source = data_source
11
+ end
12
+
13
+ def isItemExpanded(item)
14
+ true
15
+ end
16
+
17
+ def reloadItem_reloadChildren(item, recurse)
18
+ end
19
+
20
+ def to_s(item = nil, indent = '')
21
+ if @data_source.outlineView_isItemExpandable(self, item)
22
+ (0..@data_source.outlineView_numberOfChildrenOfItem(self, item) - 1).map do |i|
23
+ child = @data_source.outlineView_child_ofItem(self, i, item)
24
+ value = @data_source.outlineView_objectValueForTableColumn_byItem(self, 0, child)
25
+ "#{indent}#{value}\n" + to_s(child, indent + " ")
26
+ end.join("")
27
+ else
28
+ ""
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,44 @@
1
+ module FakeUI
2
+ class TabView
3
+ def contentRect
4
+ [0, 0, 100, 100]
5
+ end
6
+
7
+ def addTabViewItem(item)
8
+ if !@items
9
+ @items = [item]
10
+ @selected = item
11
+ else
12
+ @items << item
13
+ end
14
+ end
15
+
16
+ def selectTabViewItem(item)
17
+ raise unless @items.index item
18
+ @selected = item
19
+ end
20
+
21
+ def selectTabViewItemAtIndex(index)
22
+ raise unless 0 <= index && index < @items.size
23
+ @selected = @items[index]
24
+ end
25
+
26
+ def indexOfTabViewItem(item)
27
+ @items.index(item)
28
+ end
29
+
30
+ def removeTabViewItem(item)
31
+ index = @items.index item
32
+ @items.delete item
33
+ @selected = @items.size > index ? @items[index] : @items[@items.size - 1]
34
+ end
35
+
36
+ def selectedTabViewItem
37
+ @selected
38
+ end
39
+
40
+ def tabViewItems
41
+ @items || []
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,25 @@
1
+ module FakeUI
2
+ class TableView
3
+ def setDataSource(dataSource)
4
+ @dataSource = dataSource
5
+ end
6
+
7
+ def reloadData
8
+ end
9
+
10
+ def selectRow_byExtendingSelection(index, extendSelection)
11
+ @row = index
12
+ end
13
+
14
+ def selectedRow
15
+ @row
16
+ end
17
+
18
+ def numberOfRows
19
+ @dataSource.numberOfRowsInTableView(self)
20
+ end
21
+
22
+ def scrollRowToVisible(row)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,11 @@
1
+ module FakeUI
2
+ class TextField
3
+ def stringValue
4
+ @value || ""
5
+ end
6
+
7
+ def setStringValue(v)
8
+ @value = v
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ module FakeUI
2
+ class TextView
3
+ attr_accessor :textStorage, :string, :selectedRange
4
+
5
+ def initialize
6
+ @string = ""
7
+ @selectedRange = [0, 0]
8
+ @textStorage = TextStorage.new
9
+ end
10
+
11
+ def setString(string)
12
+ @string = string
13
+ @selectedRange = [string.size, 0]
14
+ end
15
+
16
+ def insertText(to_insert)
17
+ @string[@selectedRange[0], @selectedRange[1]] = to_insert
18
+ @selectedRange = [@selectedRange[0] + to_insert.size, 0]
19
+ end
20
+
21
+ def setSelectedRange(range)
22
+ @selectedRange = range
23
+ end
24
+
25
+ def scrollRangeToVisible(range)
26
+ # stub
27
+ end
28
+
29
+ def setDelegate(delegate)
30
+ end
31
+ end
32
+
33
+ class TextStorage
34
+ end
35
+ end
@@ -0,0 +1,22 @@
1
+ module FakeUI
2
+ class Window
3
+ def close
4
+ @key = false
5
+ end
6
+
7
+ def makeKeyAndOrderFront(parent)
8
+ @key = true
9
+ end
10
+
11
+ def makeKeyWindow
12
+ @key = true
13
+ end
14
+
15
+ def isKeyWindow
16
+ @key
17
+ end
18
+
19
+ def makeFirstResponder(view)
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,36 @@
1
+ require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
+
3
+ describe FakeUI::TextView do
4
+ before do
5
+ @text = FakeUI::TextView.new
6
+ end
7
+
8
+ it "should start empty" do
9
+ @text.string.should == ""
10
+ end
11
+
12
+ it "should be settable and insertable" do
13
+ @text.setString("app")
14
+ @text.insertText("le")
15
+ @text.insertText("!")
16
+ @text.string.should == "apple!"
17
+
18
+ @text.setString("orange")
19
+ @text.string.should == "orange"
20
+ end
21
+
22
+ it "should keep track of position" do
23
+ @text.setString('cricket')
24
+ @text.setSelectedRange([1, 0])
25
+ @text.selectedRange.should == [1, 0]
26
+ @text.insertText("ow ")
27
+
28
+ @text.string.should == "cow ricket"
29
+
30
+ @text.setSelectedRange([2, 7])
31
+ @text.insertText("l")
32
+
33
+ @text.string.should == "colt"
34
+ end
35
+ end
36
+
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + "/../lib"))
2
+
3
+ require "rubygems"
4
+ require "spec"
5
+
6
+ require "fakeui"
metadata ADDED
@@ -0,0 +1,65 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jeremylightsmith-fakeui
3
+ version: !ruby/object:Gem::Version
4
+ version: "0.1"
5
+ platform: ruby
6
+ authors:
7
+ - Jeremy Lightsmith
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-07-08 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: jeremy.lightsmith@gmail.com
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files:
23
+ - README
24
+ files:
25
+ - README
26
+ - Rakefile
27
+ - lib/fakeui
28
+ - lib/fakeui.rb
29
+ - lib/fakeui/outline_view.rb
30
+ - lib/fakeui/tab_view.rb
31
+ - lib/fakeui/table_view.rb
32
+ - lib/fakeui/text_field.rb
33
+ - lib/fakeui/text_view.rb
34
+ - lib/fakeui/window.rb
35
+ - spec/fakeui
36
+ - spec/fakeui/text_view_spec.rb
37
+ - spec/spec_helper.rb
38
+ has_rdoc: true
39
+ homepage: http://onemanswalk.com/
40
+ post_install_message:
41
+ rdoc_options: []
42
+
43
+ require_paths:
44
+ - lib
45
+ required_ruby_version: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: "0"
50
+ version:
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: "0"
56
+ version:
57
+ requirements: []
58
+
59
+ rubyforge_project:
60
+ rubygems_version: 1.2.0
61
+ signing_key:
62
+ specification_version: 2
63
+ summary: a view stub framework for testing rubycocoa applications
64
+ test_files: []
65
+