rice 4.3.0 → 4.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +174 -169
- data/CONTRIBUTORS.md +1 -0
- data/README.md +4 -4
- data/include/rice/rice.hpp +8762 -8762
- data/lib/version.rb +3 -3
- data/rice/Data_Object.ipp +386 -386
- data/rice/Identifier.hpp +50 -50
- data/rice/Identifier.ipp +28 -28
- data/rice/detail/NativeFunction.hpp +119 -119
- data/rice/detail/NativeFunction.ipp +300 -300
- data/rice/detail/NativeIterator.ipp +101 -101
- data/test/test_Array.cpp +301 -301
- data/test/test_Iterator.cpp +356 -356
- data/test/test_Stl_String_View.cpp +88 -88
- data/test/test_Stl_Vector.cpp +871 -871
- data/test/test_Symbol.cpp +7 -0
- metadata +10 -10
@@ -1,88 +1,88 @@
|
|
1
|
-
#include "unittest.hpp"
|
2
|
-
#include "embed_ruby.hpp"
|
3
|
-
#include <rice/rice.hpp>
|
4
|
-
#include <ruby/encoding.h>
|
5
|
-
#include <rice/stl.hpp>
|
6
|
-
|
7
|
-
#include <optional>
|
8
|
-
|
9
|
-
using namespace Rice;
|
10
|
-
|
11
|
-
TESTSUITE(StlStringView);
|
12
|
-
|
13
|
-
SETUP(StlStringView)
|
14
|
-
{
|
15
|
-
embed_ruby();
|
16
|
-
}
|
17
|
-
|
18
|
-
TESTCASE(std_string_view_to_ruby)
|
19
|
-
{
|
20
|
-
ASSERT(rb_equal(String("").value(), detail::to_ruby(std::string_view(""))));
|
21
|
-
ASSERT(rb_equal(String("foo").value(), detail::to_ruby(std::string_view("foo"))));
|
22
|
-
}
|
23
|
-
|
24
|
-
TESTCASE(std_string_view_to_ruby_encoding)
|
25
|
-
{
|
26
|
-
VALUE value = detail::to_ruby(std::string_view("Some String"));
|
27
|
-
String string(value);
|
28
|
-
Object encoding = string.call("encoding");
|
29
|
-
String encodingName = encoding.call("name");
|
30
|
-
std::string_view result = detail::From_Ruby<std::string_view>().convert(encodingName);
|
31
|
-
if(result != "ASCII-8BIT" && result != "US-ASCII" && result != "UTF-8") {
|
32
|
-
FAIL("Encoding incorrect", "ASCII-8BIT, US-ASCII, or UTF-8 (Windows)", result);
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
TESTCASE(std_string_view_to_ruby_encoding_utf8)
|
37
|
-
{
|
38
|
-
rb_encoding* defaultEncoding = rb_default_external_encoding();
|
39
|
-
|
40
|
-
VALUE utf8Encoding = rb_enc_from_encoding(rb_utf8_encoding());
|
41
|
-
rb_enc_set_default_external(utf8Encoding);
|
42
|
-
|
43
|
-
VALUE value = detail::to_ruby(std::string_view("Some String"));
|
44
|
-
Object object(value);
|
45
|
-
Object encoding = object.call("encoding");
|
46
|
-
Object encodingName = encoding.call("name");
|
47
|
-
ASSERT_EQUAL("UTF-8", detail::From_Ruby<std::string_view>().convert(encodingName));
|
48
|
-
|
49
|
-
rb_enc_set_default_external(rb_enc_from_encoding(defaultEncoding));
|
50
|
-
}
|
51
|
-
|
52
|
-
TESTCASE(std_string_view_from_ruby)
|
53
|
-
{
|
54
|
-
ASSERT_EQUAL(std::string_view(""), detail::From_Ruby<std::string_view>().convert(rb_str_new2("")));
|
55
|
-
ASSERT_EQUAL(std::string_view("foo"), detail::From_Ruby<std::string_view>().convert(rb_str_new2("foo")));
|
56
|
-
|
57
|
-
ASSERT_EXCEPTION_CHECK(
|
58
|
-
Exception,
|
59
|
-
detail::From_Ruby<std::string_view>().convert(rb_float_new(15.512)),
|
60
|
-
ASSERT_EQUAL("wrong argument type Float (expected String)", ex.what())
|
61
|
-
);
|
62
|
-
}
|
63
|
-
|
64
|
-
TESTCASE(std_string_view_to_ruby_with_binary)
|
65
|
-
{
|
66
|
-
Rice::String got = detail::to_ruby(std::string_view("\000test", 5));
|
67
|
-
|
68
|
-
ASSERT_EQUAL(String(std::string_view("\000test", 5)), got);
|
69
|
-
ASSERT_EQUAL(5ul, got.length());
|
70
|
-
}
|
71
|
-
|
72
|
-
TESTCASE(std_string_view_from_ruby_with_binary)
|
73
|
-
{
|
74
|
-
std::string_view got = detail::From_Ruby<std::string_view>().convert(rb_str_new("\000test", 5));
|
75
|
-
ASSERT_EQUAL(5ul, got.length());
|
76
|
-
ASSERT_EQUAL(std::string_view("\000test", 5), got);
|
77
|
-
}
|
78
|
-
|
79
|
-
TESTCASE(std_string_view_from_ruby_refefence)
|
80
|
-
{
|
81
|
-
VALUE value = rb_str_new("test", 4);
|
82
|
-
std::string_view view = detail::From_Ruby<std::string_view>().convert(value);
|
83
|
-
ASSERT_EQUAL("test", view);
|
84
|
-
|
85
|
-
String string(value);
|
86
|
-
string.instance_eval("self[1] = 'a'");
|
87
|
-
//ASSERT_EQUAL("tast", view);
|
88
|
-
}
|
1
|
+
#include "unittest.hpp"
|
2
|
+
#include "embed_ruby.hpp"
|
3
|
+
#include <rice/rice.hpp>
|
4
|
+
#include <ruby/encoding.h>
|
5
|
+
#include <rice/stl.hpp>
|
6
|
+
|
7
|
+
#include <optional>
|
8
|
+
|
9
|
+
using namespace Rice;
|
10
|
+
|
11
|
+
TESTSUITE(StlStringView);
|
12
|
+
|
13
|
+
SETUP(StlStringView)
|
14
|
+
{
|
15
|
+
embed_ruby();
|
16
|
+
}
|
17
|
+
|
18
|
+
TESTCASE(std_string_view_to_ruby)
|
19
|
+
{
|
20
|
+
ASSERT(rb_equal(String("").value(), detail::to_ruby(std::string_view(""))));
|
21
|
+
ASSERT(rb_equal(String("foo").value(), detail::to_ruby(std::string_view("foo"))));
|
22
|
+
}
|
23
|
+
|
24
|
+
TESTCASE(std_string_view_to_ruby_encoding)
|
25
|
+
{
|
26
|
+
VALUE value = detail::to_ruby(std::string_view("Some String"));
|
27
|
+
String string(value);
|
28
|
+
Object encoding = string.call("encoding");
|
29
|
+
String encodingName = encoding.call("name");
|
30
|
+
std::string_view result = detail::From_Ruby<std::string_view>().convert(encodingName);
|
31
|
+
if(result != "ASCII-8BIT" && result != "US-ASCII" && result != "UTF-8") {
|
32
|
+
FAIL("Encoding incorrect", "ASCII-8BIT, US-ASCII, or UTF-8 (Windows)", result);
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
TESTCASE(std_string_view_to_ruby_encoding_utf8)
|
37
|
+
{
|
38
|
+
rb_encoding* defaultEncoding = rb_default_external_encoding();
|
39
|
+
|
40
|
+
VALUE utf8Encoding = rb_enc_from_encoding(rb_utf8_encoding());
|
41
|
+
rb_enc_set_default_external(utf8Encoding);
|
42
|
+
|
43
|
+
VALUE value = detail::to_ruby(std::string_view("Some String"));
|
44
|
+
Object object(value);
|
45
|
+
Object encoding = object.call("encoding");
|
46
|
+
Object encodingName = encoding.call("name");
|
47
|
+
ASSERT_EQUAL("UTF-8", detail::From_Ruby<std::string_view>().convert(encodingName));
|
48
|
+
|
49
|
+
rb_enc_set_default_external(rb_enc_from_encoding(defaultEncoding));
|
50
|
+
}
|
51
|
+
|
52
|
+
TESTCASE(std_string_view_from_ruby)
|
53
|
+
{
|
54
|
+
ASSERT_EQUAL(std::string_view(""), detail::From_Ruby<std::string_view>().convert(rb_str_new2("")));
|
55
|
+
ASSERT_EQUAL(std::string_view("foo"), detail::From_Ruby<std::string_view>().convert(rb_str_new2("foo")));
|
56
|
+
|
57
|
+
ASSERT_EXCEPTION_CHECK(
|
58
|
+
Exception,
|
59
|
+
detail::From_Ruby<std::string_view>().convert(rb_float_new(15.512)),
|
60
|
+
ASSERT_EQUAL("wrong argument type Float (expected String)", ex.what())
|
61
|
+
);
|
62
|
+
}
|
63
|
+
|
64
|
+
TESTCASE(std_string_view_to_ruby_with_binary)
|
65
|
+
{
|
66
|
+
Rice::String got = detail::to_ruby(std::string_view("\000test", 5));
|
67
|
+
|
68
|
+
ASSERT_EQUAL(String(std::string_view("\000test", 5)), got);
|
69
|
+
ASSERT_EQUAL(5ul, got.length());
|
70
|
+
}
|
71
|
+
|
72
|
+
TESTCASE(std_string_view_from_ruby_with_binary)
|
73
|
+
{
|
74
|
+
std::string_view got = detail::From_Ruby<std::string_view>().convert(rb_str_new("\000test", 5));
|
75
|
+
ASSERT_EQUAL(5ul, got.length());
|
76
|
+
ASSERT_EQUAL(std::string_view("\000test", 5), got);
|
77
|
+
}
|
78
|
+
|
79
|
+
TESTCASE(std_string_view_from_ruby_refefence)
|
80
|
+
{
|
81
|
+
VALUE value = rb_str_new("test", 4);
|
82
|
+
std::string_view view = detail::From_Ruby<std::string_view>().convert(value);
|
83
|
+
ASSERT_EQUAL("test", view);
|
84
|
+
|
85
|
+
String string(value);
|
86
|
+
string.instance_eval("self[1] = 'a'");
|
87
|
+
//ASSERT_EQUAL("tast", view);
|
88
|
+
}
|