67 lines
1.8 KiB
Elixir
67 lines
1.8 KiB
Elixir
Code.require_file "../test_helper", __FILE__
|
|
|
|
module RecordTest
|
|
mixin ExUnit::Case
|
|
|
|
module FileInfo
|
|
mixin Record
|
|
record 'file_info, 'from_lib: "kernel/include/file.hrl"
|
|
end
|
|
|
|
module ElixirScope
|
|
mixin Record
|
|
record 'elixir_scope, 'from: File.expand_path("../../../include/elixir.hrl", __FILE__)
|
|
end
|
|
|
|
def record_constructor_with_dict_test
|
|
record = #RecordTest::FileInfo('type: 'regular)
|
|
'regular = record.type
|
|
nil = record.access
|
|
end
|
|
|
|
def record_constructor_with_invalid_tuple_name_test
|
|
invalid = {'elixir_another,1,2,3,4,5,6}
|
|
self.assert_error {'badrecord, invalid}, -> #RecordTest::ElixirScope(invalid)
|
|
end
|
|
|
|
def record_constructor_with_invalid_tuple_size_test
|
|
invalid = {'elixir_scope,1,2,3,4,5}
|
|
self.assert_error {'badrecord, invalid}, -> #RecordTest::ElixirScope(invalid)
|
|
end
|
|
|
|
def record_accessors_test
|
|
record = #RecordTest::FileInfo(file_info)
|
|
'regular = record.type
|
|
'read_write = record.access
|
|
|
|
new_record = record.access 'read
|
|
'read = new_record.access
|
|
end
|
|
|
|
def record_update_test
|
|
record = #RecordTest::FileInfo(file_info).update('type: 'device, 'access: 'read)
|
|
'device = record.type
|
|
'read = record.access
|
|
end
|
|
|
|
def record_defaults_test
|
|
record = #RecordTest::ElixirScope()
|
|
[] = record.nesting
|
|
end
|
|
|
|
def record_reflection_test
|
|
record = #RecordTest::ElixirScope()
|
|
'elixir_scope = record.record_name
|
|
['assign,'guard,'noname,'method,'nesting,'vars,'temp_vars,
|
|
'clause_vars,'counter,'filename,'assigned_vars] = record.record_keys
|
|
[false,false,false,[],[],_,[],_,0,$"nofile",_] = record.record_defaults
|
|
11 = record.record_size
|
|
end
|
|
|
|
private
|
|
|
|
def file_info
|
|
{ 'ok, file_info } = Erlang.file.read_file_info(__FILE__.to_bin)
|
|
file_info
|
|
end
|
|
end |