Sha256: 069a54564dd11ce3cb951e7e3264680a26ecfc106216e08d973b1324ab6cadb6
Contents?: true
Size: 1.8 KB
Versions: 5
Compression:
Stored size: 1.8 KB
Contents
require 'spec_helper' require 'h8' require 'ostruct' require 'hashie' desk_gen = <<END console.log 'started' offsets = [[-1, 0], [0, 1], [1, 0], [0, -1]] class DeskGenerator constructor: (@n, r0=0, c0=0) -> @desk = [] for r in [0...@n] @desk.push (null for col in [0...@n]) @retries = 0 @step(r0, c0, @n * @n) or throw new Error("Failed to generate desk") step: (r, c, depth) -> @desk[r][c] = depth-- console.log r, c, depth return true if depth == 0 for [r1, c1] in @moves(r, c) return true if @step(r1, c1, depth) @retries++ depth++ @desk[r][c] = null false moves: (r, c) -> moves = [] for [sr, sc] in offsets [r1, c1] = [r + sr, c + sc] if 0 <= r1 < @n && 0 <= c1 < @n && !@desk[r1][c1] moves.push [r1, c1] moves toString: -> res = [] for r in [0...@n] res.push ( (if x == 0 then ' .' else pad(x, 3)) for x in @desk[r]).join('') res.join "\n" pad = (n, len) -> len ?= 3 res = n?.toString() || '.' res = ' ' + res while res.length < len res timing = (name, cb) -> start = new Date().getTime() res = cb() console.log("\#{name}: \#{(new Date().getTime() - start) / 1000}") res result = timing 'default', -> new DeskGenerator(6, 5, 1) console.log result.toString() console.log 'retries',result.retries END class Console def debug *args log *args end def log *args # puts *args.join(' ') end end describe 'heavy scripts' do it 'should pass desk gen test' do c = H8::Context.new c[:console] = Console.new # c.eval "console.log('fine');" # pending js = H8::Coffee.compile desk_gen begin c.eval js rescue n = 1 js.each_line { |l| puts "%3d %s" % [n, l] n += 1 } raise end end end
Version data entries
5 entries across 5 versions & 1 rubygems
Version | Path |
---|---|
h8-0.5.5 | spec/heavy_load_spec.rb |
h8-0.5.4 | spec/heavy_load_spec.rb |
h8-0.5.2 | spec/heavy_load_spec.rb |
h8-0.5.1 | spec/heavy_load_spec.rb |
h8-0.5.0 | spec/heavy_load_spec.rb |