Jldrill Git C0 Coverage Information - RCov

lib/jldrill/views/gtk/widgets/StatisticsWindow.rb

Name Total Lines Lines of Code Total Coverage Code Coverage
lib/jldrill/views/gtk/widgets/StatisticsWindow.rb 164 135
93.90%
93.33%

Key

Code reported as executed by Ruby looks like this...and this: this line is also marked as covered.Lines considered as run by rcov, but not reported by Ruby, look like this,and this: these lines were inferred by rcov (using simple heuristics).Finally, here's a line marked as not executed.

Coverage Details

1 require 'Context/Gtk/Widget'
2 require 'jldrill/model/Quiz/Counter'
3 require 'gtk2'
4 
5 module JLDrill::Gtk
6         
7     class StatisticsTable < Gtk::Table
8         attr_reader :values
9         
10         def initialize(rows, columns)
11             super(rows.size + 1, columns.size + 1, false)
12             @values = addEntries(rows, columns)
13         end
14         
15         def addEntries(rows, columns)
16             values = makeValues(rows.size, columns.size)
17             columns.each_index do |i|
18                 column(i + 1, columns[i])
19             end
20             rows.each_index do |i|
21                 row(i + 1, rows[i])
22                 0.upto(columns.size - 1) do |j|
23                     addValue(values[i][j], i + 1, j + 1)
24                 end
25             end
26             values
27         end
28         
29         def makeValues(height, width)
30             retVal = []
31             0.upto(height - 1) do
32                 retVal.push([])
33             end
34             0.upto(height - 1) do |i|
35                 0.upto(width - 1) do |j|
36                     retVal[i][j] = Gtk::Label.new("0")
37                 end
38             end
39             retVal
40         end
41         
42         def row(rowNum, text)
43             label = Gtk::Label.new(text)
44             # Add 1 to row to make up for the headers
45             attach(label,
46                    # X direction            # Y direction
47                    0, 1,                    rowNum + 1, rowNum + 2,
48                    Gtk::EXPAND | Gtk::FILL, 0,
49                    0,                       0)
50         end
51 
52         def column(colNum, text)
53             label = Gtk::Label.new(text)
54             # Add 1 to row to make up for the headers
55             attach(label,
56                    # X direction            # Y direction
57                    colNum + 1, colNum + 2,  0, 1,
58                    Gtk::EXPAND | Gtk::FILL, 0,
59                    0,                       0)
60                    
61         end
62         
63         def addValue(value, row, column)
64             # Add 1 to row to make up for the headers
65             attach(value,
66                    # X direction            # Y direction
67                    column + 1, column + 2,      row + 1, row + 2,
68                    Gtk::EXPAND | Gtk::FILL, 0,
69                    0,                       0)
70         end
71     end
72     
73     class StatisticsWindow < Gtk::Window
74         include Context::Gtk::Widget
75 
76         attr_reader :accel
77         
78         def initialize(view)
79             @view = view
80             @closed = false
81             super("Statistics")
82             connectSignals unless @view.nil?
83             
84             hbox = Gtk::HBox.new()
85             add(hbox)
86             ## Layout everything in a vertical table
87             counter = JLDrill::Counter.new
88             rows = []
89             0.upto(7) do |i|
90                 rows = rows.push(counter.levelString(i))
91             end
92             columns = [" Duration ", " Correct ", " Tried ",]
93             @durationTable = StatisticsTable.new(rows, columns)
94             hbox.add(@durationTable)
95             rows = ["Reviewed", "Learned", " Time to review ", 
96                       "Time to learn", "Total Accuracy", " Learn Time % ", 
97                       " Curr Rate ", " Avg Rate "]
98             columns = [" "]
99             @rateTable = StatisticsTable.new(rows, columns)
100             hbox.add(@rateTable)
101         end  
102         
103         def connectSignals
104             @accel = Gtk::AccelGroup.new
105             @accel.connect(Gdk::Keyval::GDK_Escape, 0,
106                            Gtk::ACCEL_VISIBLE) do
107                 self.close
108             end
109             add_accel_group(@accel)
110             
111             signal_connect('delete_event') do
112                 # Request that the destroy signal be sent
113                 false
114             end
115             
116             signal_connect('destroy') do
117                 self.close
118             end
119         end
120         
121         def close
122             if !@closed
123                 @view.close
124             end
125         end
126         
127         def explicitDestroy
128             @closed = true
129             self.destroy
130         end
131         
132         def updateDuration(counter)
133             table = counter.table
134             0.upto(6) do |i|
135                 @durationTable.values[i][0].text = table[i].to_s
136             end
137             @durationTable.values[7][0].text = table[7].to_s
138         end
139         
140         def updateAccuracy(stats)
141             0.upto(7) do |i|
142                 acc = stats.levels[i].accuracy
143                 if !acc.nil?
144                     @durationTable.values[i][1].text = acc.to_s + "% "
145                     @durationTable.values[i][2].text = stats.levels[i].total.to_s
146                 else
147                     @durationTable.values[i][1].text = " - "
148                     @durationTable.values[i][2].text = " - "
149                 end
150             end
151         end
152         
153         def updateRate(stats)
154             @rateTable.values[0][0].text = stats.reviewed.to_s 
155             @rateTable.values[1][0].text = stats.learned.to_s
156             @rateTable.values[2][0].text = stats.reviewPace.to_s + "s "
157             @rateTable.values[3][0].text = stats.learnPace.to_s + "s "
158             @rateTable.values[4][0].text = stats.accuracy.to_s + "% "
159             @rateTable.values[5][0].text = stats.learnTimePercent.to_s + "% "
160             @rateTable.values[6][0].text = stats.currentReviewRate.to_s + "x "
161             @rateTable.values[7][0].text = stats.averageReviewRate.to_s + "x "
162         end
163     end
164 end

Generated on Mon May 23 16:17:47 +0900 2011 with rcov 0.9.8