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

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

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

Резултати

  • 4 точки от тестове
  • 0 бонус точки
  • 4 точки общо
  • 29 успешни тест(а)
  • 15 неуспешни тест(а)

Код

module RBFS
class RBFS::File
attr_accessor :data
def initialize(*object)
@data = object[0]
end
def data_type
case @data
when NilClass then :nil
when String then :string
when Symbol then :symbol
when Numeric then :number
when TrueClass then :boolean
when FalseClass then :boolean
end
end
def serialize
"#{data_type}:#{data}"
end
def parse(string_data)
RBFS::File.new eval(string_data.split(":")[1])
end
end
class RBFS::Directory
def initialize
@data = {}
@name
end
def add_file(name, file)
@data.merge! name => file if not (@data.include?(name) and name.include?(":"))
end
def add_directory(name, *directory)
@data.merge! name => directory[0]
end
def [](name)
@data[name]
end
def serialize
result = "#{files.size}:"
files.keys.each { |key|
result +=
"#{key}:#{@data[key].serialize.size}:#{@data[key].serialize}" }
result += "#{directories.size}:"
directories.keys.each { |dir|
result += "#{dir}:#{@data[dir].serialize.size}:#{@data[dir].serialize}" }
result
end
def parse(string_data)
end
def files
@data.select { |key, value| value.instance_of? RBFS::File }
end
def directories
@data.select { |key, value| value.instance_of? RBFS::Directory }
end
end
end

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

.F......FFFFFF..........F..FF..F..F..F..F..F

Failures:

  1) RBFS Directory can create empty directory
     Failure/Error: expect(directory.directories.keys   ).to eq    ['home']
       
       expected: ["home"]
            got: []
       
       (compared using ==)
     # /tmp/d20141111-26053-18so0mm/spec.rb:152:in `block (3 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 #serialize can serialize
     Failure/Error: expect(directory.serialize).to eq simple_serialized_string
       
       expected: "2:README:19:string:Hello world!spec.rb:20:string:describe RBFS1:rbfs:4:0:0:"
            got: "2:README:19:string:Hello world!spec.rb:20:string:describe RBFS0:"
       
       (compared using ==)
     # /tmp/d20141111-26053-18so0mm/spec.rb:81: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 #serialize can serialize multiple directories recursively
     Failure/Error: directory['rbfs'].add_file         'solution.rb', RBFS::File.new(:hidden)
     NoMethodError:
       undefined method `add_file' for nil:NilClass
     # /tmp/d20141111-26053-18so0mm/spec.rb:91: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 empty directories
     Failure/Error: parsed_directory = RBFS::Directory.parse('0:0:')
     NoMethodError:
       undefined method `parse' for RBFS::Directory:Class
     # /tmp/d20141111-26053-18so0mm/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)>'

  5) 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-18so0mm/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)>'

  6) 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-18so0mm/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)>'

  7) 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-18so0mm/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)>'

  8) RBFS File data type nil can be parsed
     Failure/Error: file = RBFS::File.parse('nil:')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:230: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 string can be parsed
     Failure/Error: file = RBFS::File.parse('string:Hey there')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:248: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 string can parse a string with colons
     Failure/Error: file = RBFS::File.parse('string:Hay :)')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:255: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)>'

  11) RBFS File data type symbol can be parsed
     Failure/Error: file = RBFS::File.parse('symbol:hello')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:274: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)>'

  12) RBFS File data type number can be parsed
     Failure/Error: file = RBFS::File.parse('number:1234')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:293: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)>'

  13) RBFS File data type float number can be parsed
     Failure/Error: file = RBFS::File.parse('number:3.14')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:312: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)>'

  14) RBFS File data type boolean true can be parsed
     Failure/Error: file = RBFS::File.parse('boolean:true')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:332: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)>'

  15) RBFS File data type boolean false can be parsed
     Failure/Error: file = RBFS::File.parse('boolean:false')
     NoMethodError:
       undefined method `parse' for RBFS::File:Class
     # /tmp/d20141111-26053-18so0mm/spec.rb:351: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.04146 seconds
44 examples, 15 failures

Failed examples:

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

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

Даяна обнови решението на 09.11.2014 17:05 (преди около 10 години)

+module RBFS
+ class RBFS::File
+
+ attr_accessor :data
+
+ def initialize(*object)
+ @data = object[0]
+ end
+
+ def data_type
+ case @data
+ when NilClass then :nil
+ when String then :string
+ when Symbol then :symbol
+ when Numeric then :number
+ when TrueClass then :boolean
+ when FalseClass then :boolean
+ end
+ end
+
+ def serialize
+
+ end
+
+ def parse(string_data)
+
+ end
+ end
+
+
+ class RBFS::Directory
+
+ def initialize
+ @data = {}
+ end
+
+ def add_file(name, file)
+ @data.merge! name => file if not @data.include?(name)
+ end
+
+ def add_directory(name, *directory)
+ @data.merge! name => directory[0]
+ end
+
+ def [](name)
+ @data[name]
+ end
+
+ def serialize
+
+ end
+
+ def parse(string_data)
+
+ end
+
+ def files
+ @data.select { |key, value| value.instance_of? RBFS::File }
+ end
+
+ def directories
+ @data.select { |key, value| value.instance_of? RBFS::Directory }
+ end
+ end
+end

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

module RBFS
class RBFS::File
attr_accessor :data
def initialize(*object)
@data = object[0]
end
def data_type
case @data
when NilClass then :nil
when String then :string
when Symbol then :symbol
when Numeric then :number
when TrueClass then :boolean
when FalseClass then :boolean
end
end
def serialize
-
+ "#{data_type.to_s}:#{data.to_s}"
end
def parse(string_data)
end
end
class RBFS::Directory
def initialize
@data = {}
+ @name
end
def add_file(name, file)
- @data.merge! name => file if not @data.include?(name)
+ @data.merge! name => file if not (@data.include?(name) and name.include?(":"))
end
def add_directory(name, *directory)
@data.merge! name => directory[0]
end
def [](name)
@data[name]
end
def serialize
-
+ result = "#{files.size}:"
+ files.keys.each { |key|
+ result +=
+ "#{key}:#{@data[key].serialize.size}:#{@data[key].serialize}" }
+ result += "#{directories.size}:"
+ directories.keys.each { |dir|
+ result += "#{dir}:#{@data[dir].serialize.size}:#{@data[dir].serialize}" }
+ result
end
def parse(string_data)
end
def files
@data.select { |key, value| value.instance_of? RBFS::File }
end
def directories
@data.select { |key, value| value.instance_of? RBFS::Directory }
end
end
end

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

module RBFS
class RBFS::File
attr_accessor :data
def initialize(*object)
@data = object[0]
end
def data_type
case @data
when NilClass then :nil
when String then :string
when Symbol then :symbol
when Numeric then :number
when TrueClass then :boolean
when FalseClass then :boolean
end
end
def serialize
- "#{data_type.to_s}:#{data.to_s}"
+ "#{data_type}:#{data}"
end
def parse(string_data)
-
+ RBFS::File.new eval(string_data.split(":")[1])
end
end
class RBFS::Directory
def initialize
@data = {}
@name
end
def add_file(name, file)
@data.merge! name => file if not (@data.include?(name) and name.include?(":"))
end
def add_directory(name, *directory)
@data.merge! name => directory[0]
end
def [](name)
@data[name]
end
def serialize
result = "#{files.size}:"
files.keys.each { |key|
result +=
"#{key}:#{@data[key].serialize.size}:#{@data[key].serialize}" }
result += "#{directories.size}:"
directories.keys.each { |dir|
result += "#{dir}:#{@data[dir].serialize.size}:#{@data[dir].serialize}" }
result
end
def parse(string_data)
end
def files
@data.select { |key, value| value.instance_of? RBFS::File }
end
def directories
@data.select { |key, value| value.instance_of? RBFS::Directory }
end
end
end