From: Sebastian Krause Date: 2011-02-13T00:43:46+09:00 Subject: [ruby-core:35214] [Ruby 1.9-Feature#4391][Open] date/delta tests --mimepart_4d56aaab71e00_1dc2add56d028587 Content-Type: text/plain Content-Transfer-Encoding: Quoted-printable Content-Disposition: inline Feature #4391: date/delta tests http://redmine.ruby-lang.org/issues/show/4391 Author: Sebastian Krause Status: Open, Priority: Normal Category: lib, Target version: 1.9.x Attached are a few tests for the Date::Delta class. I hope they are of so= me use. And some points which might be considered bugs. (Everything for 1.9.2 patchlevel 174, probably applies to older versions = too) i) Interplay with the Time class So the following doesn't look right: irb(main):005:0> t1 =3D Time.new(2011) =3D> 2011-01-01 00:00:00 +0100 irb(main):006:0> t2 =3D Date::Delta.days(1) =3D> # irb(main):007:0> t1 + t2 =3D> 2011-01-01 00:00:01 +0100 ii) Difference of Dates is number This leads to the following strange behavior: irb(main):016:0> t1 =3D Date.new(2011,2) =3D> # irb(main):017:0> t1 - t1 + Date::Delta.months(1) =3D> ((0/1)+(1/1)*i) Wouldn't it be better, if date arithmetic stayed in the classes Date and = Date::Delta when date/delta is loaded? iii) multiplication with scalars I don't know what the coercion principles exactly are. So this might be o= kay. irb(main):003:0> 2 * Date::Delta.days(2) =3D> ((4/1)+(0/1)*i) irb(main):004:0> Date::Delta.days(2) * 2 =3D> # Can I add some documentation? Is there a standard way to do it or should = I just go ahead and copy the style from other parts. ---------------------------------------- http://redmine.ruby-lang.org --mimepart_4d56aaab71e00_1dc2add56d028587 Content-Type: application/x-ruby; name=test_date_delta.rb Content-Transfer-Encoding: Base64 Content-Disposition: attachment; filename=test_date_delta.rb cmVxdWlyZSAndGVzdC91bml0JwpyZXF1aXJlICdkYXRlL2RlbHRhJwpyZXF1 aXJlICdtYXRobicKCmNsYXNzIFRlc3REYXRlRGVsdGEgPCBUZXN0OjpVbml0 OjpUZXN0Q2FzZQogIGRlZiBzZXR1cAogICAgQGZpeDEgPSAKICAgICAgeyA6 eWVhcnMgPT4gMCwgOm1vbnRocyA9PiAwLCA6ZGF5cyA9PiAxLCA6aG91cnMg PT4gMiwKICAgICAgICA6bWludXRlcyA9PiAzLCA6c2Vjb25kcyA9PiA0IH0K ICAgIEBmaXgyID0gCiAgICAgIHsgOnllYXJzID0+IDEsIDptb250aHMgPT4g MiwgOmRheXMgPT4gMCwgOmhvdXJzID0+IDAsCiAgICAgICAgOm1pbnV0ZXMg PT4gMCwgOnNlY29uZHMgPT4gMCB9CiAgICBAcGFyc2VzdHJpbmdzID0KICAg ICAgeyAiMiB3ZWVrcyBhbmQgMSBkYXlzIiA9PiBEYXRlOjpEZWx0YS5uZXco MTUpLAogICAgICAgICIyIHdlZWtzIC0gMSBkYXlzIiA9PiBEYXRlOjpEZWx0 YS5uZXcoMTMpLAogICAgICAgICIyIHdlZWtzIGFuZCAtIDEgZGF5cyIgPT4g RGF0ZTo6RGVsdGEubmV3KDEzKSwKICAgICAgICAiKDIgd2Vla3MgYW5kIDEg aG91cnMpICogMiIgPT4gRGF0ZTo6RGVsdGEubmV3KDI4LDIpLAogICAgICAg ICIxIHdlZWtzXjIiID0+IERhdGU6OkRlbHRhLm5ldyg0OSksCiAgICAgICAg IjEgZGF5cy8gMjQiID0+IERhdGU6OkRlbHRhLm5ldygwLDEpLAogICAgICAg ICIxIG1vbnRoIiA9PiBEYXRlOjpEZWx0YS5uZXcoQ29tcGxleDo6SSkKICAg IH0KICAgIEB1bml0cyA9CiAgICAgIHsieWVhciI9PjEyKiBDb21wbGV4OjpJ LAogICAgICAgICJtb250aCI9PiBDb21wbGV4OjpJLCAKICAgICAgICAiZGF5 Ij0+IFJhdGlvbmFsKDEsMSksIAogICAgICAgICJ3ZWVrIj0+IFJhdGlvbmFs KDcsMSksIAogICAgICAgICJzZW5uaWdodCI9PiBSYXRpb25hbCg3LDEpLCAK ICAgICAgICAiZm9ydG5pZ2h0Ij0+IFJhdGlvbmFsKDE0LDEpLCAKICAgICAg ICAiaG91ciI9PiBSYXRpb25hbCgxLDI0KSwgCiAgICAgICAgIm1pbnV0ZSI9 PiBSYXRpb25hbCgxLDE0NDApLCAKICAgICAgICAic2Vjb25kIj0+IFJhdGlv bmFsKDEsODY0MDApLCAKICAgICAgICAieW90dGFzZWNvbmQiPT4gUmF0aW9u YWwoMzEyNTAwMDAwMDAwMDAwMDAwMDAwLDI3KSwgCiAgICAgICAgInpldHRh c2Vjb25kIj0+IFJhdGlvbmFsKDMxMjUwMDAwMDAwMDAwMDAwMCwyNyksIAog ICAgICAgICJleGFzZWNvbmQiPT4gUmF0aW9uYWwoMzEyNTAwMDAwMDAwMDAw LDI3KSwgCiAgICAgICAgInBldGFzZWNvbmQiPT4gUmF0aW9uYWwoMzEyNTAw MDAwMDAwLDI3KSwgCiAgICAgICAgInRlcmFzZWNvbmQiPT4gUmF0aW9uYWwo MzEyNTAwMDAwLDI3KSwgCiAgICAgICAgImdpZ2FzZWNvbmQiPT4gUmF0aW9u YWwoMzEyNTAwLDI3KSwgCiAgICAgICAgIm1lZ2FzZWNvbmQiPT4gUmF0aW9u YWwoNjI1LDU0KSwgCiAgICAgICAgImtpbG9zZWNvbmQiPT4gUmF0aW9uYWwo NSw0MzIpLCAKICAgICAgICAiaGVjdG9zZWNvbmQiPT4gUmF0aW9uYWwoMSw4 NjQpLCAKICAgICAgICAiZGVjYXNlY29uZCI9PiBSYXRpb25hbCgxLDg2NDAp LCAKICAgICAgICAiZGVrYXNlY29uZCI9PiBSYXRpb25hbCgxLDg2NDApLCAK ICAgICAgICAiZGVjaXNlY29uZCI9PiBSYXRpb25hbCgxLDg2NDAwMCksIAog ICAgICAgICJjZW50aXNlY29uZCI9PiBSYXRpb25hbCgxLDg2NDAwMDApLCAK ICAgICAgICAibWlsbGlzZWNvbmQiPT4gUmF0aW9uYWwoMSw4NjQwMDAwMCks IAogICAgICAgICJkZWNpbWlsbGlzZWNvbmQiPT4gUmF0aW9uYWwoMSw4NjQw MDAwMDApLCAKICAgICAgICAiY2VudGltaWxsaXNlY29uZCI9PiBSYXRpb25h bCgxLDg2NDAwMDAwMDApLCAKICAgICAgICAibWljcm9zZWNvbmQiPT4gUmF0 aW9uYWwoMSw4NjQwMDAwMDAwMCksIAogICAgICAgICJuYW5vc2Vjb25kIj0+ IFJhdGlvbmFsKDEsODY0MDAwMDAwMDAwMDApLCAKICAgICAgICAibWlsbGlt aWNyb3NlY29uZCI9PiBSYXRpb25hbCgxLDg2NDAwMDAwMDAwMDAwKSwgCiAg ICAgICAgInBpY29zZWNvbmQiPT4gUmF0aW9uYWwoMSw4NjQwMDAwMDAwMDAw MDAwMCksIAogICAgICAgICJtaWNyb21pY3Jvc2Vjb25kIj0+IFJhdGlvbmFs KDEsODY0MDAwMDAwMDAwMDAwMDApLCAKICAgICAgICAiZmVtdG9zZWNvbmQi PT4gUmF0aW9uYWwoMSw4NjQwMDAwMDAwMDAwMDAwMDAwMCksIAogICAgICAg ICJhdHRvc2Vjb25kIj0+IFJhdGlvbmFsKDEsODY0MDAwMDAwMDAwMDAwMDAw MDAwMDApLCAKICAgICAgICAiemVwdG9zZWNvbmQiPT4gUmF0aW9uYWwoMSw4 NjQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCksIAogICAgICAgICJ5b2N0b3Nl Y29uZCI9PiBSYXRpb25hbCgxLDg2NDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwKX0KCiAgZW5kCgogIGRlZiB0ZXN0X2NvbnN0YW50cwogICAgYXNzZXJ0 X2VxdWFsKERhdGU6OkRlbHRhOjpVTklUUywgQHVuaXRzKQogIGVuZAoKCiAg ZGVmIHRlc3Rfc2luZ2xldG9uX21ldGhvZHMKICAgIGFzc2VydF9ub3RoaW5n X3JhaXNlZChOYW1lRXJyb3IpIGRvCiAgICAgIERhdGU6OkRlbHRhLm1ldGhv ZCg6ZGlmZikKICAgICAgRGF0ZTo6RGVsdGEubWV0aG9kKDpwYXJzZSkKICAg ICAgRGF0ZTo6RGVsdGEubWV0aG9kKDpkZWx0YV90b19kaG1zKQogICAgICBE YXRlOjpEZWx0YS5tZXRob2QoOmRobXNfdG9fZGVsdGEpCiAgICAgIERhdGU6 OkRlbHRhOjpVTklUUy5lYWNoX2tleSBkbyB8a3wKICAgICAgICBEYXRlOjpE ZWx0YS5tZXRob2QoayArICdzJykKICAgICAgZW5kCiAgICBlbmQKICBlbmQK CiAgZGVmIHRlc3RfbWV0aG9kcwogICAgZGVsdGEgPSBEYXRlOjpEZWx0YS5u ZXcoMSkKICAgIGFzc2VydF9ub3RoaW5nX3JhaXNlZChOYW1lRXJyb3IpIGRv CiAgICAgIGRlbHRhLm1ldGhvZCg6ZGVsdGEpCiAgICAgIGRlbHRhLm1ldGhv ZCg6ZGhtcykKICAgIGVuZAogIGVuZAoKICBkZWYgdGVzdF9kZWx0YV90b19k aG1zCiAgICBhc3NlcnRfcmFpc2UoQXJndW1lbnRFcnJvcikgZG8KICAgICAg RGF0ZTo6RGVsdGEuZGVsdGFfdG9fZGhtcygpCiAgICBlbmQKICAgIGFzc2Vy dF9yYWlzZShBcmd1bWVudEVycm9yKSBkbwogICAgICBEYXRlOjpEZWx0YS5k ZWx0YV90b19kaG1zKDEsMSwxKQogICAgZW5kCiAgICBhc3NlcnRfZXF1YWwo RGF0ZTo6RGVsdGEuZGVsdGFfdG9fZGhtcygxKSwKICAgICAgICAgICAgICAg ICBbMCwgMCwgMSwgMCwgMCwgMCwgKDAvMSldKQogICAgYXNzZXJ0X2VxdWFs KERhdGU6OkRlbHRhLmRlbHRhX3RvX2RobXMoQ29tcGxleDo6SSksCiAgICAg ICAgICAgICAgICAgWzAsIDEsIDAsIDAsIDAsIDAsICgwLzEpXSkKICAgIGFz c2VydF9lcXVhbChEYXRlOjpEZWx0YS5kZWx0YV90b19kaG1zKFJhdGlvbmFs KDEsMzAwMCkpLAogICAgICAgICAgICAgICAgIFswLCAwLCAwLCAwLCAwLCAy OCwgUmF0aW9uYWwoMSwxMDgwMDApXSkKICBlbmQKCiAgZGVmIHRlc3RfZGht c190b19kZWx0YQogICAgYXNzZXJ0X3JhaXNlKEFyZ3VtZW50RXJyb3IpIGRv CiAgICAgIERhdGU6OkRlbHRhLmRobXNfdG9fZGVsdGEoKkFycmF5Lm5ldyg2 LDEpKQogICAgZW5kCiAgICBhc3NlcnRfcmFpc2UoQXJndW1lbnRFcnJvcikg ZG8KICAgICAgRGF0ZTo6RGVsdGEuZGhtc190b19kZWx0YSgqQXJyYXkubmV3 KDgsMSkpCiAgICBlbmQKICAgIGFzc2VydF9lcXVhbChEYXRlOjpEZWx0YS5k aG1zX3RvX2RlbHRhKCpBcnJheS5uZXcoNywxKSksCiAgICAgICAgICAgICAg ICAgQ29tcGxleChSYXRpb25hbCg0NTAzMSw0MzIwMCksMTMpKQogIGVuZAoK ICBkZWYgdGVzdF9uZXcKICAgIGFzc2VydF9lcXVhbChEYXRlOjpEZWx0YS5u ZXcoMSkuY2xhc3MsRGF0ZTo6RGVsdGEpCiAgICBkMSA9IERhdGU6OkRlbHRh Lm5ldyhAZml4MVs6ZGF5c10sCiAgICAgICAgICAgICAgICAgICAgICBAZml4 MVs6aG91cnNdLAogICAgICAgICAgICAgICAgICAgICAgQGZpeDFbOm1pbnV0 ZXNdLAogICAgICAgICAgICAgICAgICAgICAgQGZpeDFbOnNlY29uZHNdKQog ICAgQGZpeDEuZWFjaCBkbyB8ayx2fAogICAgICBhc3NlcnRfZXF1YWwoZDEu c2VuZChrKSwgdikKICAgIGVuZAogICAgZDIgPSBEYXRlOjpEZWx0YS5uZXco Q29tcGxleDo6SSAqICggQGZpeDJbOm1vbnRoc10gKyAxMiogQGZpeDJbOnll YXJzXSkpCiAgICBAZml4Mi5lYWNoIGRvIHxrLHZ8CiAgICAgIGFzc2VydF9l cXVhbChkMi5zZW5kKGspLHYpCiAgICBlbmQKICBlbmQgCiAgCiAgZGVmIHRl c3RfcGFyc2UKICAgIEBwYXJzZXN0cmluZ3MuZWFjaCBkbyB8ayx2fAogICAg ICBhc3NlcnRfZXF1YWwoRGF0ZTo6RGVsdGEucGFyc2UoayksIHYpCiAgICBl bmQKICBlbmQKCiAgZGVmIHRlc3RfZGlmZgogICAgZGF0ZTEgPSBEYXRlLm5l dygyMDExKQogICAgZGF0ZTIgPSBEYXRlLm5ldygyMDExLDIsMTEpCiAgICBh c3NlcnRfZXF1YWwgRGF0ZTo6RGVsdGEuZGlmZihkYXRlMSxkYXRlMiksIAog ICAgICAgICAgICAgICAgIERhdGU6OkRlbHRhLm5ldygtNDEpCiAgICBhc3Nl cnRfZXF1YWwgRGF0ZTo6RGVsdGEuZGlmZihkYXRlMixkYXRlMSksIAogICAg ICAgICAgICAgICAgIERhdGU6OkRlbHRhLm5ldyg0MSkKICBlbmQKCiAgZGVm IHRlc3RfZGhtcwogICAgZGVsdGEgPSBEYXRlOjpEZWx0YS5uZXcoMSkKICAg IGFzc2VydF9lcXVhbChkZWx0YS5kaG1zLCBbMCwgMCwgMSwgMCwgMCwgMCwg MF0pCiAgZW5kCgogIGRlZiBzZXRfYW5kX2dldF93aXRoX3VuaXRzCiAgICBA Zml4MS5lYWNoIGRvIHxrLHZ8CiAgICAgIGRlbHRhID0gRGF0ZTo6RGVsdGEu bmV3CiAgICAgIGRlbHRhICs9IERhdGU6OkRlbHRhLnNlbmQoayx2KQogICAg ICBhc3NlcnQoZGVsdGEuc2VuZChrKSx2KQogICAgZW5kCiAgZW5kCgogIGRl ZiB0ZXN0X3BsdXMKICAgIGFzc2VydF9lcXVhbCgoRGF0ZTo6RGVsdGEuaG91 cnMoMSkgKyBEYXRlOjpEZWx0YS5tb250aHMoMSkpLmhvdXJzLDEpCiAgICBh c3NlcnRfZXF1YWwoKERhdGU6OkRlbHRhLmhvdXJzKDEpICsgRGF0ZTo6RGVs dGEubW9udGhzKDEpKS5tb250aHMsMSkKICAgIAogIGVuZAoKICBkZWYgdGVz dF9taW51cwogICAgYXNzZXJ0X2VxdWFsKC0gRGF0ZTo6RGVsdGEuaG91cnMo MSksIERhdGU6OkRlbHRhLmhvdXJzKC0xKSkKICAgIGFzc2VydF9lcXVhbChE YXRlOjpEZWx0YS5uZXcgLSBEYXRlOjpEZWx0YS5ob3VycywgCiAgICAgICAg ICAgICAgICAgRGF0ZTo6RGVsdGEuaG91cnMoLTEpKQogIGVuZAoKICBkZWYg dGVzdF9tdWx0CiAgICBhc3NlcnRfZXF1YWwoRGF0ZTo6RGVsdGEuaG91cnMo MSkqMyxEYXRlOjpEZWx0YS5ob3VycygzKSkKICBlbmQKCiAgZGVmIHRlc3Rf ZGl2CiAgICBhc3NlcnRfZXF1YWwoRGF0ZTo6RGVsdGEuaG91cnMoMykvMywg RGF0ZTo6RGVsdGEuaG91cnMoMSkpCiAgICBhc3NlcnRfZXF1YWwoRGF0ZTo6 RGVsdGEueWVhcnMoMSkvMTIsRGF0ZTo6RGVsdGEubW9udGhzKDEpKQogIGVu ZAoKICBkZWYgdGVzdF9kYXRlX3BsdXMKICAgIGFtb250aCA9IERhdGU6OkRl bHRhLm1vbnRocygxKQogICAgYXNzZXJ0X2VxdWFsKERhdGUubmV3KDIwMTEs MiwxNSkgKyBhbW9udGgsIERhdGUubmV3KDIwMTEsMywxNSkpCiAgICBhc3Nl cnRfZXF1YWwoRGF0ZS5uZXcoMjAxMSwxLDMxKSArIGFtb250aCwgRGF0ZS5u ZXcoMjAxMSwyLDI4KSkKICAgIGFzc2VydF9lcXVhbChEYXRlLm5ldygyMDEx LDEsMzEpICsgYW1vbnRoICoyLERhdGUubmV3KDIwMTEsMywzMSkpCiAgZW5k CgogIGRlZiB0ZXN0X2RhdGVfbWludXMKICAgIGFtb250aCA9IERhdGU6OkRl bHRhLm1vbnRocygxKQogICAgYXNzZXJ0X2VxdWFsKERhdGUubmV3KDIwMTEs MiwxMSkgLSBhbW9udGgsIERhdGUubmV3KDIwMTEsMSwxMSkpIAogIGVuZApl bmQK --mimepart_4d56aaab71e00_1dc2add56d028587--