Changeset 1840
- Timestamp:
- 06/08/07 15:15:58 (1 year ago)
- Files:
-
- trunk/lib/soap/baseData.rb (modified) (1 diff)
- trunk/lib/soap/mapping/typeMap.rb (modified) (2 diffs)
- trunk/lib/xsd/datatypes.rb (modified) (2 diffs)
- trunk/test/soap/test_basetype.rb (modified) (1 diff)
- trunk/test/xsd/test_xsd.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/soap/baseData.rb
r1839 r1840 238 238 extend SOAPModuleUtils 239 239 SOAPENCType = QName.new(EncodingNamespace, StringLiteral) 240 end 241 242 class SOAPNormalizedString < XSD::XSDNormalizedString 243 include SOAPBasetype 244 extend SOAPModuleUtils 245 SOAPENCType = QName.new(EncodingNamespace, NormalizedStringLiteral) 246 end 247 248 class SOAPToken < XSD::XSDToken 249 include SOAPBasetype 250 extend SOAPModuleUtils 251 SOAPENCType = QName.new(EncodingNamespace, TokenLiteral) 252 end 253 254 class SOAPLanguage < XSD::XSDLanguage 255 include SOAPBasetype 256 extend SOAPModuleUtils 257 SOAPENCType = QName.new(EncodingNamespace, LanguageLiteral) 240 258 end 241 259 trunk/lib/soap/mapping/typeMap.rb
r1839 r1840 14 14 15 15 XSD::XSDString::Type => SOAPString, 16 XSD::XSDNormalizedString::Type => SOAPNormalizedString, 17 XSD::XSDToken::Type => SOAPToken, 18 XSD::XSDLanguage::Type => SOAPLanguage, 16 19 XSD::XSDBoolean::Type => SOAPBoolean, 17 20 XSD::XSDDecimal::Type => SOAPDecimal, … … 47 50 # soap4r does not use soapenc types actively but it should be accepted. 48 51 SOAP::SOAPString::SOAPENCType => SOAPString, 52 SOAP::SOAPNormalizedString::Type => SOAPNormalizedString, 53 SOAP::SOAPToken::Type => SOAPToken, 54 SOAP::SOAPLanguage::Type => SOAPLanguage, 49 55 SOAP::SOAPBoolean::SOAPENCType => SOAPBoolean, 50 56 SOAP::SOAPDecimal::SOAPENCType => SOAPDecimal, trunk/lib/xsd/datatypes.rb
r1839 r1840 47 47 48 48 NormalizedStringLiteral = 'normalizedString' 49 #3.3.2 token 50 ##3.3.3 language 49 TokenLiteral = 'token' 50 LanguageLiteral = 'language' 51 51 #3.3.4 NMTOKEN 52 52 #3.3.5 NMTOKENS … … 1008 1008 1009 1009 def screen_data(value) 1010 super 1010 1011 if /[\t\r\n]/ =~ value 1011 1012 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.") 1012 1013 end 1014 value 1015 end 1016 end 1017 1018 class XSDToken < XSDNormalizedString 1019 Type = QName.new(Namespace, TokenLiteral) 1020 1021 def initialize(value = nil) 1022 init(Type, value) 1023 end 1024 1025 private 1026 1027 def screen_data(value) 1013 1028 super 1029 if /\A / =~ value or / \Z/ =~ value or value.index(' ') 1030 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.") 1031 end 1032 value 1033 end 1034 end 1035 1036 class XSDLanguage < XSDToken 1037 Type = QName.new(Namespace, LanguageLiteral) 1038 1039 def initialize(value = nil) 1040 init(Type, value) 1041 end 1042 1043 private 1044 1045 def screen_data(value) 1046 super 1047 # RFC 3066 syntax check 1048 if /\A[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})?\z/ !~ value 1049 raise ValueSpaceError.new("#{ type }: cannot accept '#{ value }'.") 1050 end 1051 value 1014 1052 end 1015 1053 end trunk/test/soap/test_basetype.rb
r1726 r1840 61 61 XSD::XSDString.strict_ces_validation = back 62 62 end 63 end 64 65 def test_SOAPNormalizedString 66 XSD::Charset.module_eval { @encoding_backup = @internal_encoding; @internal_encoding = "NONE" } 67 begin 68 o = SOAP::SOAPNormalizedString.new 69 assert_equal(XSD::Namespace, o.type.namespace) 70 assert_equal(XSD::NormalizedStringLiteral, o.type.name) 71 assert_equal(nil, o.data) 72 assert_equal(true, o.is_nil) 73 74 str = "abc" 75 assert_equal(str, SOAP::SOAPNormalizedString.new(str).data) 76 assert_equal(str, SOAP::SOAPNormalizedString.new(str).to_s) 77 back = SOAP::SOAPString.strict_ces_validation 78 SOAP::SOAPString.strict_ces_validation = true 79 begin 80 assert_raises(XSD::ValueSpaceError) do 81 SOAP::SOAPNormalizedString.new("\0") 82 end 83 assert_raises(XSD::ValueSpaceError) do 84 SOAP::SOAPNormalizedString.new("\xC0\xC0").to_s 85 end 86 assert_raises(XSD::ValueSpaceError) do 87 SOAP::SOAPNormalizedString.new("a\tb").to_s 88 end 89 assert_raises(XSD::ValueSpaceError) do 90 SOAP::SOAPNormalizedString.new("a\r").to_s 91 end 92 assert_raises(XSD::ValueSpaceError) do 93 SOAP::SOAPNormalizedString.new("\nb").to_s 94 end 95 ensure 96 SOAP::SOAPString.strict_ces_validation = back 97 end 98 ensure 99 XSD::Charset.module_eval { @internal_encoding = @encoding_backup } 100 end 101 end 102 103 def test_SOAPToken 104 XSD::Charset.module_eval { @encoding_backup = @internal_encoding; @internal_encoding = "NONE" } 105 begin 106 o = SOAP::SOAPToken.new 107 assert_equal(XSD::Namespace, o.type.namespace) 108 assert_equal(XSD::TokenLiteral, o.type.name) 109 assert_equal(nil, o.data) 110 assert_equal(true, o.is_nil) 111 112 str = "abc" 113 assert_equal(str, SOAP::SOAPToken.new(str).data) 114 assert_equal(str, SOAP::SOAPToken.new(str).to_s) 115 back = XSD::XSDString.strict_ces_validation 116 XSD::XSDString.strict_ces_validation = true 117 begin 118 assert_raises(XSD::ValueSpaceError) do 119 SOAP::SOAPToken.new("\0") 120 end 121 assert_raises(XSD::ValueSpaceError) do 122 SOAP::SOAPToken.new("\xC0\xC0").to_s 123 end 124 assert_raises(XSD::ValueSpaceError) do 125 SOAP::SOAPToken.new("a\tb").to_s 126 end 127 assert_raises(XSD::ValueSpaceError) do 128 SOAP::SOAPToken.new("a\r").to_s 129 end 130 assert_raises(XSD::ValueSpaceError) do 131 SOAP::SOAPToken.new("\nb").to_s 132 end 133 assert_raises(XSD::ValueSpaceError) do 134 SOAP::SOAPToken.new(" a").to_s 135 end 136 assert_raises(XSD::ValueSpaceError) do 137 SOAP::SOAPToken.new("b ").to_s 138 end 139 assert_raises(XSD::ValueSpaceError) do 140 SOAP::SOAPToken.new("a b").to_s 141 end 142 assert_equal("a b", SOAP::SOAPToken.new("a b").data) 143 ensure 144 XSD::XSDString.strict_ces_validation = back 145 end 146 ensure 147 XSD::Charset.module_eval { @internal_encoding = @encoding_backup } 148 end 149 end 150 151 def test_SOAPLanguage 152 o = SOAP::SOAPLanguage.new 153 assert_equal(XSD::Namespace, o.type.namespace) 154 assert_equal(XSD::LanguageLiteral, o.type.name) 155 assert_equal(nil, o.data) 156 assert_equal(true, o.is_nil) 157 158 str = "ja" 159 assert_equal(str, SOAP::SOAPLanguage.new(str).data) 160 assert_equal(str, SOAP::SOAPLanguage.new(str).to_s) 161 str = "ja-jp" 162 assert_equal(str, SOAP::SOAPLanguage.new(str).data) 163 assert_equal(str, SOAP::SOAPLanguage.new(str).to_s) 164 assert_raises(XSD::ValueSpaceError) do 165 SOAP::SOAPLanguage.new("ja-jp-") 166 end 167 assert_raises(XSD::ValueSpaceError) do 168 SOAP::SOAPLanguage.new("-ja-") 169 end 170 assert_raises(XSD::ValueSpaceError) do 171 SOAP::SOAPLanguage.new("ja-") 172 end 173 assert_raises(XSD::ValueSpaceError) do 174 SOAP::SOAPLanguage.new("a1-01") 175 end 176 assert_equal("aA-01", SOAP::SOAPLanguage.new("aA-01").to_s) 63 177 end 64 178 trunk/test/xsd/test_xsd.rb
r1839 r1840 102 102 end 103 103 104 =begin not implemented for now105 104 def test_XSDNormalizedString 106 105 XSD::Charset.module_eval { @encoding_backup = @internal_encoding; @internal_encoding = "NONE" } … … 187 186 XSD::Charset.module_eval { @internal_encoding = @encoding_backup } 188 187 end 189 190 def test_XSDLanguage 191 o = XSD::XSDLanguage.new 192 assert_equal(XSD::Namespace, o.type.namespace) 193 assert_equal(XSD::LanguageLiteral, o.type.name) 194 assert_equal(nil, o.data) 195 assert_equal(true, o.is_nil) 196 197 str = "ja" 198 assert_equal(str, XSD::XSDLanguage.new(str).data) 199 assert_equal(str, XSD::XSDLanguage.new(str).to_s) 200 assert_raises(XSD::ValueSpaceError) do 201 XSD::XSDLanguage.new("jb") 202 end 203 end 204 end 205 =end 188 end 189 190 def test_XSDLanguage 191 o = XSD::XSDLanguage.new 192 assert_equal(XSD::Namespace, o.type.namespace) 193 assert_equal(XSD::LanguageLiteral, o.type.name) 194 assert_equal(nil, o.data) 195 assert_equal(true, o.is_nil) 196 197 str = "ja" 198 assert_equal(str, XSD::XSDLanguage.new(str).data) 199 assert_equal(str, XSD::XSDLanguage.new(str).to_s) 200 str = "ja-jp" 201 assert_equal(str, XSD::XSDLanguage.new(str).data) 202 assert_equal(str, XSD::XSDLanguage.new(str).to_s) 203 assert_raises(XSD::ValueSpaceError) do 204 XSD::XSDLanguage.new("ja-jp-") 205 end 206 assert_raises(XSD::ValueSpaceError) do 207 XSD::XSDLanguage.new("-ja-") 208 end 209 assert_raises(XSD::ValueSpaceError) do 210 XSD::XSDLanguage.new("ja-") 211 end 212 assert_raises(XSD::ValueSpaceError) do 213 XSD::XSDLanguage.new("a1-01") 214 end 215 assert_equal("aA-01", XSD::XSDLanguage.new("aA-01").to_s) 216 end 206 217 207 218 def test_XSDBoolean