aboutsummaryrefslogtreecommitdiffstats
path: root/test/test_builtin_types.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_builtin_types.rb')
-rw-r--r--test/test_builtin_types.rb132
1 files changed, 132 insertions, 0 deletions
diff --git a/test/test_builtin_types.rb b/test/test_builtin_types.rb
new file mode 100644
index 0000000..89cdf0b
--- /dev/null
+++ b/test/test_builtin_types.rb
@@ -0,0 +1,132 @@
+# coding: ASCII-8BIT
+require_relative "helper"
+
+class BuiltinTypesTest < ASN1KitTestCase
+ def test_boolean
+ v1 = ASN1Kit::Boolean.new(true)
+ assert_equal true, v1.value
+ assert_equal B(%w{ 01 01 FF }), v1.to_der
+
+ v2 = ASN1Kit::Boolean.new(false)
+ assert_equal false, v2.value
+ assert_equal B(%w{ 01 01 00 }), v2.to_der
+ end
+
+ def test_integer
+ assert_equal B(%w{ 02 01 00 }), ASN1Kit::Integer.new(0).to_der
+ assert_equal B(%w{ 02 01 01 }), ASN1Kit::Integer.new(1).to_der
+ assert_equal B(%w{ 02 02 00 80 }), ASN1Kit::Integer.new(128).to_der
+ assert_equal B(%w{ 02 02 01 00 }), ASN1Kit::Integer.new(256).to_der
+ assert_equal B(%w{ 02 03 0F 42 40 }), ASN1Kit::Integer.new(1_000_000).to_der
+ assert_equal B(%w{ 02 01 FF }), ASN1Kit::Integer.new(-1).to_der
+ assert_equal B(%w{ 02 01 80 }), ASN1Kit::Integer.new(-128).to_der
+ assert_equal B(%w{ 02 02 FF 00 }), ASN1Kit::Integer.new(-256).to_der
+ assert_equal B(%w{ 02 03 F0 BD C0 }), ASN1Kit::Integer.new(-1_000_000).to_der
+
+ v1 = ASN1Kit::Integer.new(123)
+ assert_equal 123, v1.value
+ assert_equal nil, v1.name
+
+ t1 = ASN1Kit::Integer[["a", 123], ["b", 234]]
+ assert_compare t1, :<, ASN1Kit::Integer
+ assert_equal ["a", "b"], t1.named_numbers.sort
+ assert_equal 123, t1.named_number("a")
+ assert_equal 234, t1.named_number("b")
+
+ v2 = t1.new("a")
+ assert_equal 123, v2.value
+ assert_equal "a", v2.name
+
+ v3 = t1.new(234)
+ assert_equal 234, v3.value
+ assert_equal "b", v3.name
+ end
+
+ def test_enumerated
+ t1 = ASN1Kit::Enumerated["a" => 0, "b" => 1_000_000]
+ assert_equal ["a", "b"], t1.enumerations.sort
+ assert_equal 0, t1.value_for("a")
+ assert_equal 1_000_000, t1.value_for("b")
+
+ v1 = t1.new("a")
+ assert_equal "a", v1.name
+ assert_equal 0, v1.value
+ assert_equal B(%w{ 0A 01 00 }), v1.to_der
+
+ v2 = t1.new("b")
+ assert_equal B(%w{ 0A 03 0F 42 40 }), v2.to_der
+ end
+
+ def test_real
+ end
+
+ def test_bitstring
+ v1 = ASN1Kit::BitString.new("\xC0", 2)
+ assert_equal "\xC0", v1.string
+ assert_equal 2, v1.bit_length
+ assert_equal B(%w{ 03 02 06 C0 }), v1.to_der
+
+ v2 = ASN1Kit::BitString.new("\xF0\xFF", 16)
+ assert_equal "\xF0\xFF", v2.string
+ assert_equal 16, v2.bit_length
+ assert_equal B(%w{ 03 03 00 F0 FF }), v2.to_der
+
+ t1 = ASN1Kit::BitString[["a", 0], ["b", 3]]
+ assert_compare t1, :<, ASN1Kit::BitString
+
+ v3 = t1.new("\xC0", 8)
+ assert_equal true, v3.set?("a")
+ assert_equal true, v3.set?(0)
+ assert_equal true, v3.set?(1)
+ assert_equal false, v3.set?(2)
+ assert_equal false, v3.set?("b")
+ assert_equal false, v3.set?(3)
+ assert_equal B(%w{ 03 02 00 C0 }), v3.to_der
+
+ v4 = t1.new_with_names("b")
+ assert_equal 4, v4.bit_length
+ assert_equal B(%w{ 03 02 04 10 }), v4.to_der
+ end
+
+ def test_octetstring
+ v1 = ASN1Kit::OctetString.new("abc")
+ assert_equal "abc", v1.value
+ assert_equal B(%w{ 04 03 61 62 63 }), v1.to_der
+ end
+
+ def test_null
+ v1 = ASN1Kit::Null.new
+ assert_equal B(%w{ 05 00 }), v1.to_der
+ end
+
+ def test_sequence
+ seq = ASN1Kit::Sequence[
+ ASN1Kit::Sequence::ComponentType.new("a", ASN1Kit::Integer),
+ ASN1Kit::Sequence::ComponentType.new("b", ASN1Kit::Boolean),
+ ]
+ obj = seq.new("a" => ASN1Kit::Integer.new(1),
+ "b" => ASN1Kit::Boolean.new(true))
+ assert_equal B(%w{ 30 06 02 01 01 01 01 FF }), obj.to_der
+ end
+
+ def test_object_identifier
+ v1 = ASN1Kit::ObjectIdentifier.new([2, 999, 3])
+ assert_equal "2.999.3", v1.dot_notation
+ assert_equal B(%w{ 06 03 88 37 03 }), v1.to_der
+
+ v2 = ASN1Kit::ObjectIdentifier.from_dot_notation("2.999.3")
+ assert_equal "2.999.3", v2.dot_notation
+ assert_equal B(%w{ 06 03 88 37 03 }), v2.to_der
+ end
+
+ def test_relative_object_identifier
+ v1 = ASN1Kit::RelativeOID.new([8571, 3, 2])
+ assert_equal "8571.3.2", v1.dot_notation
+ assert_equal B(%w{ 0D 04 C2 7B 03 02 }), v1.to_der
+
+ v2 = ASN1Kit::RelativeOID.from_dot_notation("8571.3.2")
+ assert_equal "8571.3.2", v1.dot_notation
+ assert_equal B(%w{ 0D 04 C2 7B 03 02 }), v2.to_der
+ end
+
+end