uttk 0.3.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +36 -0
- data/COPYING +18 -0
- data/ChangeLog +7673 -0
- data/GUIDELINES +86 -0
- data/LGPL +504 -0
- data/NEWS +158 -0
- data/NORM +137 -0
- data/README +180 -0
- data/Rakefile +8 -0
- data/SPEC.gemspec +15 -0
- data/SPEC.yml +60 -0
- data/TODO +23 -0
- data/TODO.old +31 -0
- data/VERSION +5 -0
- data/bin/getopts/uttk.rb +390 -0
- data/bin/uttk +188 -0
- data/bin/uttk-unit +125 -0
- data/lib/uttk.rb +288 -0
- data/lib/uttk/dumpers/Basic.rb +23 -0
- data/lib/uttk/dumpers/BasicColor.rb +35 -0
- data/lib/uttk/dumpers/Dumper.rb +77 -0
- data/lib/uttk/dumpers/Html.rb +271 -0
- data/lib/uttk/dumpers/Path.rb +24 -0
- data/lib/uttk/dumpers/Xml.rb +88 -0
- data/lib/uttk/dumpers/Yaml.rb +138 -0
- data/lib/uttk/filters.rb +128 -0
- data/lib/uttk/filters/Buffer.rb +119 -0
- data/lib/uttk/filters/Compact.rb +75 -0
- data/lib/uttk/filters/Default.rb +27 -0
- data/lib/uttk/filters/DefaultColor.rb +27 -0
- data/lib/uttk/filters/Filter.rb +53 -0
- data/lib/uttk/filters/Id.rb +30 -0
- data/lib/uttk/filters/JustStatus.rb +25 -0
- data/lib/uttk/filters/KeepSkipBased.rb +38 -0
- data/lib/uttk/filters/NodeCut.rb +97 -0
- data/lib/uttk/filters/RPathFilter.rb +134 -0
- data/lib/uttk/filters/Saver.rb +53 -0
- data/lib/uttk/filters/TextFilter.rb +69 -0
- data/lib/uttk/generators/dumper_generator.rb +28 -0
- data/lib/uttk/generators/filter_generator.rb +28 -0
- data/lib/uttk/generators/generator.rb +86 -0
- data/lib/uttk/generators/generator_generator.rb +26 -0
- data/lib/uttk/generators/loader_generator.rb +28 -0
- data/lib/uttk/generators/path_filter_generator.rb +28 -0
- data/lib/uttk/generators/strategy_generator.rb +28 -0
- data/lib/uttk/generators/templates/dumper.rb +50 -0
- data/lib/uttk/generators/templates/filter.rb +50 -0
- data/lib/uttk/generators/templates/generator.rb +28 -0
- data/lib/uttk/generators/templates/loader.rb +26 -0
- data/lib/uttk/generators/templates/path_filter.rb +28 -0
- data/lib/uttk/generators/templates/strategy.rb +59 -0
- data/lib/uttk/generators/templates/strategy.yml +28 -0
- data/lib/uttk/generators/templates/unit_test.rb +46 -0
- data/lib/uttk/loaders/Loader.rb +180 -0
- data/lib/uttk/loaders/Ruby.rb +28 -0
- data/lib/uttk/loaders/Yaml.rb +98 -0
- data/lib/uttk/logger.rb +306 -0
- data/lib/uttk/logger/backend.rb +170 -0
- data/lib/uttk/logger/path.rb +202 -0
- data/lib/uttk/logger/section_node.rb +214 -0
- data/lib/uttk/logger/severity.rb +63 -0
- data/lib/uttk/logger/to_uttk_log.rb +127 -0
- data/lib/uttk/logger/verbosity.rb +61 -0
- data/lib/uttk/logger_factory.rb +55 -0
- data/lib/uttk/path_filters/ColorStatus.rb +57 -0
- data/lib/uttk/path_filters/PathFilter.rb +27 -0
- data/lib/uttk/path_filters/RemoveTypes.rb +25 -0
- data/lib/uttk/status.rb +146 -0
- data/lib/uttk/strategies/Abort.rb +24 -0
- data/lib/uttk/strategies/Assert.rb +44 -0
- data/lib/uttk/strategies/Authors.rb +45 -0
- data/lib/uttk/strategies/Block.rb +113 -0
- data/lib/uttk/strategies/Bootstrap.rb +55 -0
- data/lib/uttk/strategies/Checkout.rb +64 -0
- data/lib/uttk/strategies/Clean.rb +29 -0
- data/lib/uttk/strategies/Cmd.rb +60 -0
- data/lib/uttk/strategies/CmdBase.rb +130 -0
- data/lib/uttk/strategies/Collection.rb +158 -0
- data/lib/uttk/strategies/Compile.rb +59 -0
- data/lib/uttk/strategies/Composite.rb +201 -0
- data/lib/uttk/strategies/Composite/contents_eval.rb +40 -0
- data/lib/uttk/strategies/Configure.rb +66 -0
- data/lib/uttk/strategies/Error.rb +23 -0
- data/lib/uttk/strategies/Fail.rb +26 -0
- data/lib/uttk/strategies/IOBased.rb +159 -0
- data/lib/uttk/strategies/Import.rb +60 -0
- data/lib/uttk/strategies/Iterate.rb +139 -0
- data/lib/uttk/strategies/JUnit.rb +205 -0
- data/lib/uttk/strategies/KillAll.rb +62 -0
- data/lib/uttk/strategies/Make.rb +94 -0
- data/lib/uttk/strategies/Package.rb +129 -0
- data/lib/uttk/strategies/PackageCollection.rb +78 -0
- data/lib/uttk/strategies/Pass.rb +24 -0
- data/lib/uttk/strategies/Pool.rb +104 -0
- data/lib/uttk/strategies/ProbabilityThreshold.rb +46 -0
- data/lib/uttk/strategies/Proxy.rb +42 -0
- data/lib/uttk/strategies/RMatch.rb +92 -0
- data/lib/uttk/strategies/RUnit.rb +132 -0
- data/lib/uttk/strategies/SignalCmd.rb +85 -0
- data/lib/uttk/strategies/Sleep.rb +36 -0
- data/lib/uttk/strategies/SqlQuery.rb +120 -0
- data/lib/uttk/strategies/Strategy.rb +683 -0
- data/lib/uttk/strategies/Stub.rb +37 -0
- data/lib/uttk/strategies/SubCmd.rb +77 -0
- data/lib/uttk/strategies/Suite.rb +71 -0
- data/lib/uttk/strategies/Test.rb +89 -0
- data/lib/uttk/streams.rb +69 -0
- data/lib/uttk/streams/Diff.rb +60 -0
- data/lib/uttk/streams/HexaDiff.rb +35 -0
- data/lib/uttk/streams/Stream.rb +76 -0
- data/lib/uttk/weights.rb +17 -0
- data/lib/uttk/weights/WExpr.rb +68 -0
- data/lib/uttk/weights/WFloat.rb +23 -0
- data/lib/uttk/weights/WMin.rb +22 -0
- data/lib/uttk/weights/Weight.rb +105 -0
- data/lib/www/javascripts/uttk.js +185 -0
- data/misc/expandtab.rb +29 -0
- data/misc/header.rb +44 -0
- data/misc/renaming +57 -0
- data/misc/textile_compiler +194 -0
- data/misc/uttk-grep.sh +8 -0
- data/misc/uttk-line-count.rb +143 -0
- data/test/examples-suite.yml +8 -0
- data/test/examples/README +68 -0
- data/test/examples/basic.rb +10 -0
- data/test/examples/basic.yml +9 -0
- data/test/examples/cache/cache_and_fatal.yml +5 -0
- data/test/examples/cache/simple.yml +30 -0
- data/test/examples/sql/basic.yml +24 -0
- data/test/examples/students-suite.yml +9 -0
- data/test/examples/students/ball.yml +11 -0
- data/test/examples/students/glob_stud.yml +20 -0
- data/test/examples/students/mini-lib.yml +61 -0
- data/test/examples/students/pool_stud.yml +31 -0
- data/test/examples/students/stud.yml +21 -0
- data/test/fixtures/ball/20040804-exam_a1-zapngo-tessar_m.tar.gz +0 -0
- data/test/fixtures/ball/Makefile +24 -0
- data/test/fixtures/ball/bar_p-mini-lib.tar.bz2 +0 -0
- data/test/fixtures/ball/bar_p-mini-lib/Makefile +20 -0
- data/test/fixtures/ball/bar_p-mini-lib/my_strlen.c +13 -0
- data/test/fixtures/ball/foo_s-mini-lib.tar.bz2 +0 -0
- data/test/fixtures/ball/foo_s-mini-lib/Makefile +20 -0
- data/test/fixtures/ball/foo_s-mini-lib/configure +2 -0
- data/test/fixtures/ball/foo_s-mini-lib/my_strlen.c +10 -0
- data/test/fixtures/ball/hello.tar.bz2 +0 -0
- data/test/fixtures/ball/hello.tar.gz +0 -0
- data/test/fixtures/ball/hello/Makefile +14 -0
- data/test/fixtures/ball/hello/hello.c +7 -0
- data/test/fixtures/ball/jack-exit.tar.bz2 +0 -0
- data/test/fixtures/ball/jack-exit/Makefile +14 -0
- data/test/fixtures/ball/jack-exit/exit.c +16 -0
- data/test/fixtures/ball/joe-exit.tar.bz2 +0 -0
- data/test/fixtures/ball/joe-exit/Makefile +14 -0
- data/test/fixtures/ball/joe-exit/exit.c +8 -0
- data/test/fixtures/ball/joe_i-mini-lib.tar.bz2 +0 -0
- data/test/fixtures/ball/joe_i-mini-lib/Makefile +20 -0
- data/test/fixtures/ball/joe_i-mini-lib/configure +2 -0
- data/test/fixtures/ball/joe_i-mini-lib/my_strlen.c +10 -0
- data/test/fixtures/ball/john-exit.tar.bz2 +0 -0
- data/test/fixtures/ball/john-exit/Makefile +14 -0
- data/test/fixtures/ball/john-exit/exit.c +6 -0
- data/test/fixtures/ball/qux_j-mini-lib.tar.bz2 +0 -0
- data/test/fixtures/ball/qux_j-mini-lib/Makefile +20 -0
- data/test/fixtures/ball/qux_j-mini-lib/my_strlen.c +12 -0
- data/test/fixtures/binaries/segv +0 -0
- data/test/fixtures/binaries/segv.c +10 -0
- data/test/fixtures/binaries/segv.rb +2 -0
- data/test/fixtures/demo/command-tutorial/steps/1/check.yml +5 -0
- data/test/fixtures/demo/command-tutorial/steps/1/pluralizer.rb +10 -0
- data/test/fixtures/demo/command-tutorial/steps/2/bad_check.yml +7 -0
- data/test/fixtures/demo/command-tutorial/steps/2/check.yml +7 -0
- data/test/fixtures/demo/command-tutorial/steps/2/pluralizer.rb +10 -0
- data/test/fixtures/demo/command-tutorial/steps/3.1/check.yml +12 -0
- data/test/fixtures/demo/command-tutorial/steps/3/check.yml +14 -0
- data/test/fixtures/demo/command-tutorial/steps/4.1/bird.txt +1 -0
- data/test/fixtures/demo/command-tutorial/steps/4.1/check.yml +12 -0
- data/test/fixtures/demo/command-tutorial/steps/4/check.yml +12 -0
- data/test/fixtures/demo/command-tutorial/steps/4/pluralizer.rb +12 -0
- data/test/fixtures/demo/command-tutorial/steps/5.1/bird.txt +1 -0
- data/test/fixtures/demo/command-tutorial/steps/5.1/check.yml +17 -0
- data/test/fixtures/demo/command-tutorial/steps/5.1/pluralizer.rb +17 -0
- data/test/fixtures/demo/command-tutorial/steps/5/bird.txt +1 -0
- data/test/fixtures/demo/command-tutorial/steps/5/check.yml +16 -0
- data/test/fixtures/demo/command-tutorial/steps/5/pluralizer.rb +16 -0
- data/test/fixtures/demo/command-tutorial/steps/6.1/bird.txt +1 -0
- data/test/fixtures/demo/command-tutorial/steps/6.1/check.yml +22 -0
- data/test/fixtures/demo/command-tutorial/steps/6.1/pluralizer.rb +17 -0
- data/test/fixtures/demo/command-tutorial/steps/6/bird.txt +1 -0
- data/test/fixtures/demo/command-tutorial/steps/6/check.yml +21 -0
- data/test/fixtures/demo/command-tutorial/steps/6/pluralizer.rb +17 -0
- data/test/fixtures/demo/command-tutorial/steps/7/bird.txt +1 -0
- data/test/fixtures/demo/command-tutorial/steps/7/check.yml +22 -0
- data/test/fixtures/demo/command-tutorial/steps/7/pluralizer.rb +17 -0
- data/test/fixtures/demo/filter-tutorial/check.yml +20 -0
- data/test/fixtures/demo/filter-tutorial/filters/CutSkip100.rb +19 -0
- data/test/fixtures/demo/filter-tutorial/pluralizer.rb +17 -0
- data/test/fixtures/java/unit/MultiRight/Foo/Foo.java +11 -0
- data/test/fixtures/java/unit/MultiRight/Foo/FooTest.java +15 -0
- data/test/fixtures/java/unit/MultiRight/MultiRight.java +13 -0
- data/test/fixtures/java/unit/MultiRight/MultiRightTest.java +12 -0
- data/test/fixtures/java/unit/MultiRight/bar/Bar.java +11 -0
- data/test/fixtures/java/unit/MultiRight/bar/BarTest.java +21 -0
- data/test/fixtures/java/unit/MultiRight/build.sh +7 -0
- data/test/fixtures/java/unit/SimpleException/SimpleExceptionTest.java +11 -0
- data/test/fixtures/java/unit/SimpleException/build.sh +4 -0
- data/test/fixtures/java/unit/build.sh +9 -0
- data/test/fixtures/java/unit/multibar.yml +6 -0
- data/test/fixtures/java/unit/multifoo.yml +6 -0
- data/test/fixtures/java/unit/multiright.yml +8 -0
- data/test/fixtures/java/unit/simple_exception.yml +6 -0
- data/test/fixtures/mini-lib/Makefile +9 -0
- data/test/fixtures/mini-lib/strlen.c +15 -0
- data/test/fixtures/package/pkg_foo.tar.gz +0 -0
- data/test/fixtures/package/pkg_foo/Makefile +20 -0
- data/test/fixtures/package/pkg_foo/bootstrap +3 -0
- data/test/fixtures/package/pkg_foo/configure +3 -0
- data/test/fixtures/package/pkg_foo/foo.sh +2 -0
- data/test/fixtures/text/1.txt +4 -0
- data/test/fixtures/unit/bad.rb +26 -0
- data/test/fixtures/unit/error.rb +6 -0
- data/test/fixtures/unit/good.rb +26 -0
- data/test/functional-suite.yml +10 -0
- data/test/functional/author.yml +11 -0
- data/test/functional/base.yml +119 -0
- data/test/functional/base_pool.yml +13 -0
- data/test/functional/block.yml +13 -0
- data/test/functional/cat.yml +16 -0
- data/test/functional/cmd.yml +17 -0
- data/test/functional/diff.yml +27 -0
- data/test/functional/env_cmd.yml +53 -0
- data/test/functional/exit.yml +15 -0
- data/test/functional/fatal.yml +23 -0
- data/test/functional/glob.yml +11 -0
- data/test/functional/hexa-diff.yml +25 -0
- data/test/functional/import.yml +41 -0
- data/test/functional/iterate.yml +99 -0
- data/test/functional/killall.yml +31 -0
- data/test/functional/pkg.yml +14 -0
- data/test/functional/probability_threshold.yml +35 -0
- data/test/functional/r_unit.yml +26 -0
- data/test/functional/rmatch.yml +122 -0
- data/test/functional/signal_cmd.yml +22 -0
- data/test/functional/sub.yml +15 -0
- data/test/functional/test.yml +25 -0
- data/test/functional/timeout.yml +20 -0
- data/test/functional/wc.yml +26 -0
- data/test/functional/weight.yml +152 -0
- data/test/pkg-suite.yml +8 -0
- data/test/pkg/cmdline.yml +80 -0
- data/test/pool-suite.yml +8 -0
- data/test/pool/base.yml +12 -0
- data/test/pool/pool.yml +25 -0
- data/test/ruby-suite.rb +10 -0
- data/test/ruby-suite.yml +5 -0
- data/test/ruby/base.rb +119 -0
- data/test/ruby/iterate.rb +21 -0
- data/test/ruby/wc.rb +43 -0
- data/test/unit-suite.yml +10 -0
- data/test/unit/dumpers/path_test.rb +46 -0
- data/test/unit/dumpers/xml_test.rb +65 -0
- data/test/unit/dumpers/yaml_test.rb +65 -0
- data/test/unit/filters/buffer_test.rb +168 -0
- data/test/unit/filters/keep_skip_based_test.rb +46 -0
- data/test/unit/filters/node_cut_test.rb +72 -0
- data/test/unit/filters/rpath_filter_test.rb +191 -0
- data/test/unit/filters/text_filter_test.rb +46 -0
- data/test/unit/filters_test.rb +119 -0
- data/test/unit/logger/section_node_test.rb +120 -0
- data/test/unit/logger/severity_test.rb +37 -0
- data/test/unit/logger/to_uttk_log_test.rb +113 -0
- data/test/unit/logger/verbosity_test.rb +44 -0
- data/test/unit/logger_test.rb +203 -0
- data/test/unit/strategies/suite_test.rb +151 -0
- data/test/uttk-check.yml +8 -0
- data/test/uttk-distcheck.yml +18 -0
- metadata +399 -0
@@ -0,0 +1,76 @@
|
|
1
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
2
|
+
# Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
|
3
|
+
# License:: LGPL
|
4
|
+
# $Id: /fey/uttk/trunk/lib/uttk/streams/Stream.rb 8778 2005-09-26T04:34:48.103938Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module Uttk
|
8
|
+
|
9
|
+
module Streams
|
10
|
+
|
11
|
+
class Stream
|
12
|
+
|
13
|
+
#
|
14
|
+
# Attributes
|
15
|
+
#
|
16
|
+
|
17
|
+
attr_accessor :name, :my, :ref
|
18
|
+
|
19
|
+
|
20
|
+
#
|
21
|
+
# Constructor
|
22
|
+
#
|
23
|
+
|
24
|
+
def initialize ( name, ref=nil )
|
25
|
+
@name, @my, @ref = name.to_s, TempPath.new(name), ref
|
26
|
+
end
|
27
|
+
|
28
|
+
|
29
|
+
#
|
30
|
+
# Methods
|
31
|
+
#
|
32
|
+
|
33
|
+
def compare_streams
|
34
|
+
return @cmp if defined? @cmp
|
35
|
+
@cmp = @ref.compare_stream(@my)
|
36
|
+
@status = @cmp ? :PASS : :FAILED
|
37
|
+
@cmp
|
38
|
+
end
|
39
|
+
|
40
|
+
def status
|
41
|
+
compare_streams
|
42
|
+
@status
|
43
|
+
end
|
44
|
+
|
45
|
+
def to_uttk_log ( log )
|
46
|
+
unless @name == 'input'
|
47
|
+
str = @my.to_s_for_uttk_log
|
48
|
+
unless str.nil? or (str.is_a? String and str.empty?)
|
49
|
+
log["my_#@name"] = str
|
50
|
+
end
|
51
|
+
end
|
52
|
+
unless @ref.nil?
|
53
|
+
str = @ref.to_s_for_uttk_log
|
54
|
+
unless str.nil? or (str.is_a? String and str.empty?)
|
55
|
+
log["ref_#@name"] = str
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def clean
|
61
|
+
if @my.is_a? Pathname
|
62
|
+
@my.unlink if @my.exist? and @my.temp?
|
63
|
+
end
|
64
|
+
if @ref.is_a? Pathname
|
65
|
+
@ref.unlink if @ref.exist? and @ref.temp?
|
66
|
+
elsif @ref.is_a? File
|
67
|
+
ref = Pathname.new(@ref.path)
|
68
|
+
ref.unlink if ref.exist? and ref.temp?
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
end # class Stream
|
73
|
+
|
74
|
+
end # module Streams
|
75
|
+
|
76
|
+
end # module Uttk
|
data/lib/uttk/weights.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
# Author:: Nicolas Despr�s <nicolas.despres@lrde.epita.fr>.
|
2
|
+
# Copyright:: Copyright (c) 2005 Uttk Team. All rights reserved.
|
3
|
+
# License:: LGPL
|
4
|
+
# $Id: /w/fey/uttk/trunk/lib/uttk/weights.rb 21966 2006-02-19T21:06:09.175871Z pouillar $
|
5
|
+
|
6
|
+
|
7
|
+
module Uttk
|
8
|
+
|
9
|
+
module Weights
|
10
|
+
|
11
|
+
Default = WFloat
|
12
|
+
|
13
|
+
end # module Weights
|
14
|
+
|
15
|
+
end # module Uttk
|
16
|
+
|
17
|
+
|
@@ -0,0 +1,68 @@
|
|
1
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
2
|
+
# Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
|
3
|
+
# License:: LGPL
|
4
|
+
# $Id: /fey/uttk/trunk/lib/uttk/weights/WExpr.rb 8778 2005-09-26T04:34:48.103938Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module Uttk
|
8
|
+
|
9
|
+
module Weights
|
10
|
+
|
11
|
+
class WExpr < Weight
|
12
|
+
|
13
|
+
attr_accessor :expr
|
14
|
+
|
15
|
+
def initialize ( aFloat, min=0, max=1, expr=nil )
|
16
|
+
super(aFloat, min, max)
|
17
|
+
@expr = expr || "#{to_f}[#@min, #@max]"
|
18
|
+
end
|
19
|
+
|
20
|
+
def + ( rhs )
|
21
|
+
x = super
|
22
|
+
x.expr = "(#{@expr} + #{rhs.to_s})[#{x.min}, #{x.max}]"
|
23
|
+
x
|
24
|
+
end
|
25
|
+
|
26
|
+
def * ( rhs )
|
27
|
+
x = super
|
28
|
+
x.expr = "(#{to_s} * #{rhs.to_s})[#{x.min}, #{x.max}]"
|
29
|
+
x
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
|
+
def normalize ( weight )
|
34
|
+
diff = @max - @min
|
35
|
+
if diff.zero?
|
36
|
+
if @max.zero? and weight.zero?
|
37
|
+
self.class.new(:PASS)
|
38
|
+
else
|
39
|
+
self.class.new(:FAIL)
|
40
|
+
end
|
41
|
+
else
|
42
|
+
self.class.new((self - @min) / diff, 0, 1,
|
43
|
+
"((#{to_s} - #{min.to_s}) / (#{max.to_s} - #{min.to_s}))")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
def get
|
49
|
+
@expr + " == #{to_f.to_s} == #{(to_f * 100).floor}%"
|
50
|
+
end
|
51
|
+
|
52
|
+
def to_s
|
53
|
+
@expr
|
54
|
+
end
|
55
|
+
|
56
|
+
def to_yaml ( opts={} )
|
57
|
+
if opts[:uttk]
|
58
|
+
to_f.to_yaml(opts)
|
59
|
+
else
|
60
|
+
super
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
end # class WExpr
|
65
|
+
|
66
|
+
end # module Weights
|
67
|
+
|
68
|
+
end # module Uttk
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
2
|
+
# Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
|
3
|
+
# License:: LGPL
|
4
|
+
# $Id: /fey/uttk/trunk/lib/uttk/weights/WFloat.rb 8778 2005-09-26T04:34:48.103938Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module Uttk
|
8
|
+
|
9
|
+
module Weights
|
10
|
+
|
11
|
+
class WFloat < Weight
|
12
|
+
|
13
|
+
def get
|
14
|
+
return to_f if nan?
|
15
|
+
(to_f * 100).floor.to_s + '%'
|
16
|
+
end
|
17
|
+
|
18
|
+
end # class WFloat
|
19
|
+
|
20
|
+
end # module Weights
|
21
|
+
|
22
|
+
end # module Uttk
|
23
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
2
|
+
# Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
|
3
|
+
# License:: LGPL
|
4
|
+
# $Id: /fey/uttk/trunk/lib/uttk/weights/WMin.rb 8778 2005-09-26T04:34:48.103938Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
module Uttk
|
8
|
+
|
9
|
+
module Weights
|
10
|
+
|
11
|
+
class WMin < WFloat
|
12
|
+
|
13
|
+
def normalize ( weight )
|
14
|
+
(to_f == @max) ? self.class.new(:PASS) : self.class.new(:FAIL)
|
15
|
+
end
|
16
|
+
|
17
|
+
end # class WMin
|
18
|
+
|
19
|
+
end # module Weights
|
20
|
+
|
21
|
+
end # module Uttk
|
22
|
+
|
@@ -0,0 +1,105 @@
|
|
1
|
+
# Author:: Nicolas Pouillard <ertai@lrde.epita.fr>.
|
2
|
+
# Copyright:: Copyright (c) 2004, 2005 Uttk team. All rights reserved.
|
3
|
+
# License:: LGPL
|
4
|
+
# $Id: /fey/uttk/trunk/lib/uttk/weights/Weight.rb 8800 2005-10-09T11:12:27.126567Z ertai $
|
5
|
+
|
6
|
+
|
7
|
+
require 'delegate'
|
8
|
+
|
9
|
+
module Uttk
|
10
|
+
|
11
|
+
# FIXME: explain here how to write a new weight computation
|
12
|
+
module Weights
|
13
|
+
|
14
|
+
# FIXME: document me
|
15
|
+
class Weight
|
16
|
+
|
17
|
+
attr_reader :min, :max
|
18
|
+
|
19
|
+
def initialize ( aFloat, min=0, max=1 )
|
20
|
+
if BASE.has_key? aFloat
|
21
|
+
aFloat, min, max = BASE[aFloat]
|
22
|
+
end
|
23
|
+
aFloat = aFloat.to_f
|
24
|
+
@val = aFloat
|
25
|
+
@min, @max = min, max
|
26
|
+
unless @min <= aFloat or aFloat <= @max
|
27
|
+
raise ArgumentError, "#@min <= #{aFloat} <= #@max"
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
BASE =
|
32
|
+
{
|
33
|
+
:START => [0, 0, 0],
|
34
|
+
:PASS => [1, 0, 1],
|
35
|
+
:FAIL => [0, 0, 1]
|
36
|
+
}.freeze.each_value { |x| x.freeze }
|
37
|
+
|
38
|
+
def start?
|
39
|
+
[self, @max, @min].all? { |x| x.zero? }
|
40
|
+
end
|
41
|
+
|
42
|
+
def min?
|
43
|
+
to_f == @min
|
44
|
+
end
|
45
|
+
|
46
|
+
def max?
|
47
|
+
to_f == @max
|
48
|
+
end
|
49
|
+
|
50
|
+
def pass?
|
51
|
+
! zero? and max?
|
52
|
+
end
|
53
|
+
|
54
|
+
def fail?
|
55
|
+
to_f != @max
|
56
|
+
end
|
57
|
+
|
58
|
+
def + ( rhs )
|
59
|
+
rhs = self.class.new(rhs) unless rhs.is_a? Weight
|
60
|
+
self.class.new(to_f + rhs.to_f, @min + rhs.min, @max + rhs.max)
|
61
|
+
end
|
62
|
+
|
63
|
+
def * ( rhs )
|
64
|
+
f = rhs.to_f
|
65
|
+
a, b, c = to_f * f, @min * f, @max * f
|
66
|
+
b, c = c, b if f < 0
|
67
|
+
self.class.new(a, b, c)
|
68
|
+
end
|
69
|
+
|
70
|
+
def normalize ( weight )
|
71
|
+
diff = @max - @min
|
72
|
+
if diff.zero?
|
73
|
+
if @max.zero? and weight.zero?
|
74
|
+
self.class.new(:PASS)
|
75
|
+
else
|
76
|
+
self.class.new(:FAIL)
|
77
|
+
end
|
78
|
+
else
|
79
|
+
self.class.new((self - @min) / diff, 0, 1)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
attr_reader :val
|
84
|
+
alias :get :val
|
85
|
+
|
86
|
+
def long_get
|
87
|
+
"#{get}[#@min, #@max]"
|
88
|
+
end
|
89
|
+
|
90
|
+
def == ( rhs )
|
91
|
+
rhs.class <= Weight and
|
92
|
+
@min == rhs.min and
|
93
|
+
@val == rhs.val and
|
94
|
+
@max == rhs.max
|
95
|
+
end
|
96
|
+
|
97
|
+
def method_missing ( *a, &b )
|
98
|
+
@val.send(*a, &b)
|
99
|
+
end
|
100
|
+
|
101
|
+
end # class Weight
|
102
|
+
|
103
|
+
end # module Weights
|
104
|
+
|
105
|
+
end # module Uttk
|
@@ -0,0 +1,185 @@
|
|
1
|
+
/* Uttk JavaScript library */
|
2
|
+
|
3
|
+
// Results of the moulette
|
4
|
+
var uttk_root = new Array();
|
5
|
+
var uttk_hash = new Array();
|
6
|
+
var uttk_nodes = new Array();
|
7
|
+
var uttk_leaves = new Array();
|
8
|
+
var CLASS = 0;
|
9
|
+
var ID = 1;
|
10
|
+
var FATHER = 2;
|
11
|
+
var STATE = 3;
|
12
|
+
var CONTENTS1 = 4;
|
13
|
+
var CONTENTS2 = 5;
|
14
|
+
var CONTENTS3 = 6;
|
15
|
+
|
16
|
+
|
17
|
+
// Main function
|
18
|
+
function uttk_main ( )
|
19
|
+
{
|
20
|
+
var src = uttk_display(uttk_root);
|
21
|
+
var dom = document.getElementById('uttk_contents');
|
22
|
+
|
23
|
+
if (dom == null)
|
24
|
+
alert("DOM id='uttk_contents' not found !");
|
25
|
+
else
|
26
|
+
dom.innerHTML = src;
|
27
|
+
}
|
28
|
+
|
29
|
+
|
30
|
+
// Add a leaf to "father"
|
31
|
+
function uttk_add_leaf ( id, father_id, state, c1, c2, c3 )
|
32
|
+
{
|
33
|
+
var father = uttk_hash[father_id];
|
34
|
+
|
35
|
+
if (father == null)
|
36
|
+
name += "(FATHER[" + father_id + "] == null)";
|
37
|
+
var leaf = new Array("leaf", id, father, state, c1, c2 || '', c3 || '');
|
38
|
+
if (father != null)
|
39
|
+
father[CONTENTS3].push(leaf);
|
40
|
+
|
41
|
+
uttk_hash[id] = leaf;
|
42
|
+
uttk_leaves.push(leaf);
|
43
|
+
}
|
44
|
+
|
45
|
+
|
46
|
+
// Add a node to "father"
|
47
|
+
function uttk_add_node ( id, father_id, state, c1, c2 )
|
48
|
+
{
|
49
|
+
var father = uttk_hash[father_id];
|
50
|
+
var node = new Array("node", id, father, state, c1, c2, new Array());
|
51
|
+
|
52
|
+
if (father == null)
|
53
|
+
uttk_root.push(node);
|
54
|
+
else
|
55
|
+
father[CONTENTS3].push(node);
|
56
|
+
|
57
|
+
uttk_hash[id] = node;
|
58
|
+
uttk_nodes.push(node);
|
59
|
+
}
|
60
|
+
|
61
|
+
|
62
|
+
// Collapse or expand data
|
63
|
+
function uttk_toggle_state ( id )
|
64
|
+
{
|
65
|
+
var obj = uttk_hash[id];
|
66
|
+
|
67
|
+
obj[STATE] = (obj[STATE] == 1)? 0 : 1;
|
68
|
+
|
69
|
+
// Redisplay
|
70
|
+
uttk_main();
|
71
|
+
}
|
72
|
+
|
73
|
+
|
74
|
+
// Generate html common part
|
75
|
+
function uttk_node_or_leaf ( data )
|
76
|
+
{
|
77
|
+
switch (data[STATE])
|
78
|
+
{
|
79
|
+
case 0:
|
80
|
+
break;
|
81
|
+
case 1:
|
82
|
+
return data[CONTENTS1] + 'open' + data[CONTENTS2];
|
83
|
+
case 2:
|
84
|
+
return data[CONTENTS1];
|
85
|
+
default:
|
86
|
+
alert('Unknown state: ' + data[STATE]);
|
87
|
+
}
|
88
|
+
return data[CONTENTS1] + data[CONTENTS2];
|
89
|
+
}
|
90
|
+
|
91
|
+
|
92
|
+
// Generate html for node
|
93
|
+
function uttk_node ( node )
|
94
|
+
{
|
95
|
+
if (node[STATE] == 0)
|
96
|
+
return "";
|
97
|
+
else
|
98
|
+
return uttk_display(node[CONTENTS3]);
|
99
|
+
}
|
100
|
+
|
101
|
+
|
102
|
+
// Generate html for leaf
|
103
|
+
function uttk_leaf ( leaf )
|
104
|
+
{
|
105
|
+
if (leaf[STATE] == 0)
|
106
|
+
return "";
|
107
|
+
else
|
108
|
+
return leaf[CONTENTS3];
|
109
|
+
}
|
110
|
+
|
111
|
+
|
112
|
+
// Display a hierachy
|
113
|
+
function uttk_display(data)
|
114
|
+
{
|
115
|
+
var i;
|
116
|
+
var source = "";
|
117
|
+
|
118
|
+
for (i = 0; i < data.length; ++i)
|
119
|
+
{
|
120
|
+
var element = data[i];
|
121
|
+
|
122
|
+
source += uttk_node_or_leaf(element)
|
123
|
+
|
124
|
+
switch (element[CLASS])
|
125
|
+
{
|
126
|
+
case "node":
|
127
|
+
source += uttk_node(element);
|
128
|
+
break;
|
129
|
+
case "leaf":
|
130
|
+
source += uttk_leaf(element);
|
131
|
+
break;
|
132
|
+
default:
|
133
|
+
alert('Unknown element type: ' + element[CLASS]);
|
134
|
+
}
|
135
|
+
|
136
|
+
source += '</div>'
|
137
|
+
}
|
138
|
+
return source;
|
139
|
+
}
|
140
|
+
|
141
|
+
|
142
|
+
function uttk_change_state_all ( kind, state )
|
143
|
+
{
|
144
|
+
var i;
|
145
|
+
|
146
|
+
switch ( kind )
|
147
|
+
{
|
148
|
+
case null:
|
149
|
+
for (i = 0; i < uttk_nodes.length; ++i)
|
150
|
+
if (uttk_nodes[i][STATE] != 2)
|
151
|
+
uttk_nodes[i][STATE] = state;
|
152
|
+
for (i = 0; i < uttk_leaves.length; ++i)
|
153
|
+
if (uttk_leaves[i][STATE] != 2)
|
154
|
+
uttk_leaves[i][STATE] = state;
|
155
|
+
break;
|
156
|
+
case "node":
|
157
|
+
for (i = 0; i < uttk_nodes.length; ++i)
|
158
|
+
if (uttk_nodes[i][STATE] != 2)
|
159
|
+
uttk_nodes[i][STATE] = state;
|
160
|
+
break;
|
161
|
+
case "leaf":
|
162
|
+
for (i = 0; i < uttk_leaves.length; ++i)
|
163
|
+
if (uttk_leaves[i][STATE] != 2)
|
164
|
+
uttk_leaves[i][STATE] = state;
|
165
|
+
break;
|
166
|
+
default:
|
167
|
+
alert('Unknown element type: ' + element[CLASS]);
|
168
|
+
}
|
169
|
+
|
170
|
+
uttk_main();
|
171
|
+
}
|
172
|
+
|
173
|
+
|
174
|
+
// Expand all nodes or leaves
|
175
|
+
function uttk_expand_all ( kind )
|
176
|
+
{
|
177
|
+
uttk_change_state_all(kind, 1);
|
178
|
+
}
|
179
|
+
|
180
|
+
|
181
|
+
// Collapse all nodes or leaves
|
182
|
+
function uttk_collapse_all ( kind )
|
183
|
+
{
|
184
|
+
uttk_change_state_all(kind, 0);
|
185
|
+
}
|