Решение на Трета задача от Мария Дулева

Обратно към всички решения

Към профила на Мария Дулева

Резултати

  • 5 точки от тестове
  • 0 бонус точки
  • 5 точки общо
  • 33 успешни тест(а)
  • 11 неуспешни тест(а)

Код

module RBFS
class File
attr_accessor :data
def initialize(some_data = nil)
@data = some_data
end
def data_type
return :nil if(@data.is_a? NilClass)
return :string if(@data.is_a? String)
return :symbol if(@data.is_a? Symbol)
return :number if(@data.is_a? Bignum or @data.is_a? Float or @data.is_a? Integer)
return :boolean if(@data.is_a? TrueClass or @data.is_a? FalseClass)
end
def serialize
"#{self.data_type}:#{self.data}"
end
def self.parse(string_data)
File.new(string_data.split(':').pop)
end
end
class Directory
attr_accessor :files, :directories
def initialize
@files = {}
@directories = {}
end
def add_file(name, file)
@files[name] = file
end
def add_directory(name, directory=Directory.new)
@directories[name] = directory
end
def [](name)
return @directories[name] if(@directories.include? name)
@files[name]
end
def serialize
result = ''
result += "#{@files.length}:"
@files.each_pair do |key,value|
result += "#{key}:#{value.serialize.length}:#{value.serialize}"
end
result += "#{@directories.length}:"
@directories.each_pair do|key, value|
result+="#{key}:#{value.serialize.length}:#{value.serialize}"
end
result
end
end
end

Лог от изпълнението

..........FFFF..........F...F..F..F..F..F..F

Failures:

  1) RBFS Directory serialization ::parse can parse empty directories
     Failure/Error: parsed_directory = RBFS::Directory.parse('0:0:')
     NoMethodError:
       undefined method `parse' for RBFS::Directory:Class
     # /tmp/d20141111-26053-1d53xk2/spec.rb:101:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  2) RBFS Directory serialization ::parse can parse directories with files
     Failure/Error: parsed_directory = RBFS::Directory.parse(simple_serialized_string)
     NoMethodError:
       undefined method `parse' for RBFS::Directory:Class
     # /tmp/d20141111-26053-1d53xk2/spec.rb:108:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  3) RBFS Directory serialization ::parse can parse directory trees without files
     Failure/Error: parsed_directory = RBFS::Directory.parse('0:2:dir1:15:0:1:dir2:4:0:0:dir3:4:0:0:')
     NoMethodError:
       undefined method `parse' for RBFS::Directory:Class
     # /tmp/d20141111-26053-1d53xk2/spec.rb:117:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  4) RBFS Directory serialization ::parse can parse directories recursively
     Failure/Error: parsed_directory = RBFS::Directory.parse(recursive_serialized_string)
     NoMethodError:
       undefined method `parse' for RBFS::Directory:Class
     # /tmp/d20141111-26053-1d53xk2/spec.rb:125:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  5) RBFS File data type nil can be parsed
     Failure/Error: expect(file.data     ).to eq nil
       
       expected: nil
            got: "nil"
       
       (compared using ==)
     # /tmp/d20141111-26053-1d53xk2/spec.rb:231:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  6) RBFS File data type string can parse a string with colons
     Failure/Error: expect(file.data     ).to eq 'Hay :)'
       
       expected: "Hay :)"
            got: ")"
       
       (compared using ==)
     # /tmp/d20141111-26053-1d53xk2/spec.rb:257:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  7) RBFS File data type symbol can be parsed
     Failure/Error: expect(file.data     ).to eq :hello
       
       expected: :hello
            got: "hello"
       
       (compared using ==)
       
       Diff:
       @@ -1,2 +1,2 @@
       -:hello
       +"hello"
     # /tmp/d20141111-26053-1d53xk2/spec.rb:276:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  8) RBFS File data type number can be parsed
     Failure/Error: expect(file.data     ).to eq 1234
       
       expected: 1234
            got: "1234"
       
       (compared using ==)
     # /tmp/d20141111-26053-1d53xk2/spec.rb:295:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  9) RBFS File data type float number can be parsed
     Failure/Error: expect(file.data     ).to eq 3.14
       
       expected: 3.14
            got: "3.14"
       
       (compared using ==)
     # /tmp/d20141111-26053-1d53xk2/spec.rb:314:in `block (5 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  10) RBFS File data type boolean true can be parsed
     Failure/Error: expect(file.data     ).to eq true
       
       expected: true
            got: "true"
       
       (compared using ==)
       
       Diff:
       @@ -1,2 +1,2 @@
       -true
       +"true"
     # /tmp/d20141111-26053-1d53xk2/spec.rb:334:in `block (6 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

  11) RBFS File data type boolean false can be parsed
     Failure/Error: expect(file.data     ).to eq false
       
       expected: false
            got: "false"
       
       (compared using ==)
     # /tmp/d20141111-26053-1d53xk2/spec.rb:353:in `block (6 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.04396 seconds
44 examples, 11 failures

Failed examples:

rspec /tmp/d20141111-26053-1d53xk2/spec.rb:100 # RBFS Directory serialization ::parse can parse empty directories
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:107 # RBFS Directory serialization ::parse can parse directories with files
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:116 # RBFS Directory serialization ::parse can parse directory trees without files
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:124 # RBFS Directory serialization ::parse can parse directories recursively
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:229 # RBFS File data type nil can be parsed
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:254 # RBFS File data type string can parse a string with colons
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:273 # RBFS File data type symbol can be parsed
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:292 # RBFS File data type number can be parsed
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:311 # RBFS File data type float number can be parsed
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:331 # RBFS File data type boolean true can be parsed
rspec /tmp/d20141111-26053-1d53xk2/spec.rb:350 # RBFS File data type boolean false can be parsed

История (2 версии и 0 коментара)

Мария обнови решението на 10.11.2014 00:34 (преди около 10 години)

+module RBFS
+ class File
+ attr_accessor :data
+ def initialize(some_data = nil)
+ @data = some_data
+ end
+
+ def data_type
+ return :nil if(@data.is_a? NilClass)
+ return :string if(@data.is_a? String)
+ return :symbol if(@data.is_a? Symbol)
+ return :number if(@data.is_a? Bignum or @data.is_a? Float or @data.is_a? Integer)
+ return :boolean if(@data.is_a? TrueClass or @data.is_a? FalseClass)
+ end
+
+ def serialize
+ "#{self.data_type}:#{self.data}"
+ end
+
+ def self.parse(string_data)
+ File.new(string_data.split(':').pop)
+ end
+
+ end
+
+ class Directory
+ attr_accessor :files, :directories
+ def initialize
+ @files = {}
+ @directories = {}
+ end
+
+ def add_file(name, file)
+ @files[name] = file
+ end
+
+ def add_directory(name, directory=Directory.new)
+ @directories[name] = directory
+ end
+
+ def [](name)
+ if(@directories.include? name)
+ return @directories[name]
+ end
+ @files[name]
+ end
+
+ def serialize
+ result = ''
+ result += "#{@files.length}:"
+ @files.each_pair do |key,value|
+ result += "#{key}:#{value.serialize.length}:#{value.serialize}"
+ end
+ result += "#{@directories.length}:"
+ @directories.each_pair do|key, value|
+ result+="#{key}:#{value.serialize.length}:#{value.serialize}"
+ end
+ result
+ end
+ end
+end

Мария обнови решението на 10.11.2014 16:16 (преди около 10 години)

module RBFS
- class File
- attr_accessor :data
- def initialize(some_data = nil)
- @data = some_data
- end
+ class File
+ attr_accessor :data
+ def initialize(some_data = nil)
+ @data = some_data
+ end
- def data_type
- return :nil if(@data.is_a? NilClass)
- return :string if(@data.is_a? String)
- return :symbol if(@data.is_a? Symbol)
- return :number if(@data.is_a? Bignum or @data.is_a? Float or @data.is_a? Integer)
- return :boolean if(@data.is_a? TrueClass or @data.is_a? FalseClass)
- end
+ def data_type
+ return :nil if(@data.is_a? NilClass)
+ return :string if(@data.is_a? String)
+ return :symbol if(@data.is_a? Symbol)
+ return :number if(@data.is_a? Bignum or @data.is_a? Float or @data.is_a? Integer)
+ return :boolean if(@data.is_a? TrueClass or @data.is_a? FalseClass)
+ end
- def serialize
- "#{self.data_type}:#{self.data}"
- end
+ def serialize
+ "#{self.data_type}:#{self.data}"
+ end
- def self.parse(string_data)
- File.new(string_data.split(':').pop)
- end
+ def self.parse(string_data)
+ File.new(string_data.split(':').pop)
+ end
+ end
- end
+ class Directory
+ attr_accessor :files, :directories
+ def initialize
+ @files = {}
+ @directories = {}
+ end
- class Directory
- attr_accessor :files, :directories
- def initialize
- @files = {}
- @directories = {}
- end
+ def add_file(name, file)
+ @files[name] = file
+ end
- def add_file(name, file)
- @files[name] = file
- end
-
- def add_directory(name, directory=Directory.new)
+ def add_directory(name, directory=Directory.new)
@directories[name] = directory
end
- def [](name)
- if(@directories.include? name)
- return @directories[name]
- end
- @files[name]
+ def [](name)
+ return @directories[name] if(@directories.include? name)
+ @files[name]
end
- def serialize
- result = ''
- result += "#{@files.length}:"
- @files.each_pair do |key,value|
- result += "#{key}:#{value.serialize.length}:#{value.serialize}"
- end
- result += "#{@directories.length}:"
- @directories.each_pair do|key, value|
- result+="#{key}:#{value.serialize.length}:#{value.serialize}"
- end
- result
+ def serialize
+ result = ''
+ result += "#{@files.length}:"
+ @files.each_pair do |key,value|
+ result += "#{key}:#{value.serialize.length}:#{value.serialize}"
+ end
+ result += "#{@directories.length}:"
+ @directories.each_pair do|key, value|
+ result+="#{key}:#{value.serialize.length}:#{value.serialize}"
+ end
+ result
end
- end
+ end
end