File: generator_test.rb

package info (click to toggle)
ruby-beefcake 1.2.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 228 kB
  • sloc: ruby: 1,655; makefile: 4
file content (46 lines) | stat: -rw-r--r-- 1,515 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
require 'minitest/autorun'
require 'beefcake/generator'

class GeneratorTest < Minitest::Test

  def setup
    # Load up the generator request for the addressbook.proto example
    dat = File.dirname(__FILE__) + "/../dat/code_generator_request.dat"
    mock_request = File.read(dat)
    @req = CodeGeneratorRequest.decode(mock_request)
  end

  def test_request_has_filenames_as_string
    @req.proto_file.each do |file|
      assert_equal Encoding.find("UTF-8"), file.name.encoding
    end
  end

  def test_generate_empty_namespace
    @res = Beefcake::Generator.compile([], @req)
    assert_equal(CodeGeneratorResponse, @res.class)
  end

  def test_generate_top_namespace
    @res = Beefcake::Generator.compile(["Top"], @req)
    assert_equal(CodeGeneratorResponse, @res.class)
    assert_match(/module Top/, @res.file.first.content)
  end

  def test_generate_two_level_namespace
    @res = Beefcake::Generator.compile(["Top", "Bottom"], @req)
    assert_equal(CodeGeneratorResponse, @res.class)
    assert_match(/module Top\s*\n\s*module Bottom/m, @res.file.first.content)
  end

  # Covers the regression of encoding a CodeGeneratorResponse under 1.9.2-p136 raising
  # Encoding::CompatibilityError: incompatible character encodings: ASCII-8BIT and US-ASCII
  def test_encode_decode_generated_response
    @res = Beefcake::Generator.compile([], @req)

    assert_equal(CodeGeneratorResponse, @res.class)

    round_trip = CodeGeneratorResponse.decode(@res.encode)
    assert_equal round_trip, @res
  end
end