bson 4.14.1 → 4.15.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e5ec11b42a8128c41cd06cd8fc23d2ebee4018efa84de8a59d5676a0802fa3c4
4
- data.tar.gz: 58c7ef8d648b9ad1b35c6aef6e3521be706c73b366644e4d7b6727534542b5d1
3
+ metadata.gz: 3d0c420e8204cb354acfc6adadb5097b71f4a8346620a5461153c6461aece1e2
4
+ data.tar.gz: ce5e7172180e7e9f5c60d2af3207b50e0ead96283d36828e75a118cc53cdd7fa
5
5
  SHA512:
6
- metadata.gz: ca0a5c1c642319eddbe69dfea59ad845316baabb0207658cdc7b389bea2295a284d52d62e4c675305b7ac985350ca430653fb5244002d5e7d2854a24199d4fc6
7
- data.tar.gz: f1aa3987ed9bba6ca90dcc1739c26ca7e70130d56a55bbaf4a8f92611ba96908a89309d346a1608cfb19c276378c238c3fbcbd10b8b813b9a2027b454a295890
6
+ metadata.gz: 990f1be935132660ad51dab98c9233e12f9af5d03eac5f52a5bef82a78af2d258c12721564bfaf042977766c65d9adc7dbc7d88241283207213fe9ac15c9a024
7
+ data.tar.gz: 8004b3cd0e51a769df76fd9027058f403efe6b5a565eff39aca3e43f700f0b77a7a670793dfb043d0cf963537eda0426e8a885dd4044adc2800934beaeb59286
checksums.yaml.gz.sig CHANGED
Binary file
@@ -20,6 +20,7 @@ module BSON
20
20
 
21
21
  class Decimal128
22
22
  include JSON
23
+ include Comparable
23
24
 
24
25
  # A Decimal128 is type 0x13 in the BSON spec.
25
26
  #
@@ -97,7 +98,16 @@ module BSON
97
98
  end
98
99
  alias :eql? :==
99
100
 
100
- # Create a new Decimal128 from a BigDecimal.
101
+ def <=>(other)
102
+ to_big_decimal <=> case other
103
+ when Decimal128
104
+ other.to_big_decimal
105
+ else
106
+ other
107
+ end
108
+ end
109
+
110
+ # Create a new Decimal128 from a string or a BigDecimal instance.
101
111
  #
102
112
  # @example Create a Decimal128 from a BigDecimal.
103
113
  # Decimal128.new(big_decimal)
@@ -105,7 +115,7 @@ module BSON
105
115
  # @param [ String, BigDecimal ] object The BigDecimal or String to use for
106
116
  # instantiating a Decimal128.
107
117
  #
108
- # @raise [ InvalidBigDecimal ] Raise error unless object argument is a BigDecimal.
118
+ # @raise [ InvalidArgument ] When argument is not a String or BigDecimal.
109
119
  #
110
120
  # @since 4.2.0
111
121
  def initialize(object)
data/lib/bson/version.rb CHANGED
@@ -14,5 +14,5 @@
14
14
  # limitations under the License.
15
15
 
16
16
  module BSON
17
- VERSION = "4.14.1"
17
+ VERSION = "4.15.0"
18
18
  end
@@ -1602,4 +1602,219 @@ describe BSON::Decimal128 do
1602
1602
  expect(registered).to eq(described_class)
1603
1603
  end
1604
1604
  end
1605
+
1606
+ %w(== ===).each do |eq_op|
1607
+ let(:lhs) { described_class.new('1.2e12') }
1608
+
1609
+ describe "##{eq_op}" do
1610
+ context 'when rhs is equal to lhs' do
1611
+ context 'when both are Decimal128 instances' do
1612
+ let(:rhs) { described_class.new('1.2e12') }
1613
+
1614
+ it 'is true' do
1615
+ (lhs == rhs).should be true
1616
+ end
1617
+ end
1618
+
1619
+ context 'when rhs is of a different type' do
1620
+ [
1621
+ 1200000000000,
1622
+ 1200000000000.0,
1623
+ BigDecimal('1.2e12'),
1624
+ ].each do |rhs|
1625
+ context "when rhs is #{rhs.class}" do
1626
+ it 'is true' do
1627
+ pending 'RUBY-2952'
1628
+
1629
+ (lhs == rhs).should be true
1630
+ end
1631
+ end
1632
+ end
1633
+ end
1634
+ end
1635
+
1636
+ context 'when rhs is not equal to lhs' do
1637
+ context 'when both are Decimal128 instances' do
1638
+ let(:rhs) { described_class.new('1.21e12') }
1639
+
1640
+ it 'is false' do
1641
+ (lhs == rhs).should be false
1642
+ end
1643
+ end
1644
+
1645
+ context 'when rhs is of a different type' do
1646
+
1647
+ [
1648
+ 1200000000001,
1649
+ 1200000000001.0,
1650
+ BigDecimal('1.21e12'),
1651
+ ].each do |rhs|
1652
+ context "when rhs is #{rhs.class}" do
1653
+ it 'is false' do
1654
+ (lhs == rhs).should be false
1655
+ end
1656
+ end
1657
+ end
1658
+ end
1659
+ end
1660
+ end
1661
+ end
1662
+
1663
+ describe "#<=>" do
1664
+
1665
+ let(:lhs) { described_class.new('1.2e12') }
1666
+
1667
+ context 'when lhs is less than rhs' do
1668
+ context 'when both are Decimal128 instances' do
1669
+ let(:rhs) { described_class.new('1.21e12') }
1670
+
1671
+ it 'is -1' do
1672
+ (lhs <=> rhs).should be -1
1673
+ end
1674
+ end
1675
+
1676
+ context 'when rhs is of a different type' do
1677
+ [
1678
+ 1200000000001,
1679
+ 1200000000001.0,
1680
+ BigDecimal('1.21e12'),
1681
+ ].each do |rhs|
1682
+ context "when rhs is #{rhs.class}" do
1683
+ it 'is -1' do
1684
+ (lhs <=> rhs).should be -1
1685
+ end
1686
+ end
1687
+ end
1688
+ end
1689
+ end
1690
+
1691
+ context 'when rhs is equal to lhs' do
1692
+ context 'when both are Decimal128 instances' do
1693
+ let(:rhs) { described_class.new('1.2e12') }
1694
+
1695
+ it 'is 0' do
1696
+ (lhs <=> rhs).should be 0
1697
+ end
1698
+ end
1699
+
1700
+ context 'when rhs is of a different type' do
1701
+
1702
+ [
1703
+ 1200000000000,
1704
+ 1200000000000.0,
1705
+ BigDecimal('1.2e12'),
1706
+ ].each do |rhs|
1707
+ context "when rhs is #{rhs.class}" do
1708
+ it 'is 0' do
1709
+ (lhs <=> rhs).should be 0
1710
+ end
1711
+ end
1712
+ end
1713
+ end
1714
+ end
1715
+
1716
+ context 'when rhs is greater than lhs' do
1717
+ context 'when both are Decimal128 instances' do
1718
+ let(:rhs) { described_class.new('1.1e12') }
1719
+
1720
+ it 'is 1' do
1721
+ (lhs <=> rhs).should be 1
1722
+ end
1723
+ end
1724
+
1725
+ context 'when rhs is of a different type' do
1726
+
1727
+ [
1728
+ 1100000000000,
1729
+ 1100000000000.0,
1730
+ BigDecimal('1.1e12'),
1731
+ ].each do |rhs|
1732
+ context "when rhs is #{rhs.class}" do
1733
+ it 'is 1' do
1734
+ (lhs <=> rhs).should be 1
1735
+ end
1736
+ end
1737
+ end
1738
+ end
1739
+ end
1740
+ end
1741
+
1742
+ describe "#<" do
1743
+
1744
+ let(:lhs) { described_class.new('1.2e12') }
1745
+
1746
+ context 'when lhs is less than rhs' do
1747
+ context 'when both are Decimal128 instances' do
1748
+ let(:rhs) { described_class.new('1.21e12') }
1749
+
1750
+ it 'is true' do
1751
+ (lhs < rhs).should be true
1752
+ end
1753
+ end
1754
+
1755
+ context 'when rhs is of a different type' do
1756
+ [
1757
+ 1200000000001,
1758
+ 1200000000001.0,
1759
+ BigDecimal('1.21e12'),
1760
+ ].each do |rhs|
1761
+ context "when rhs is #{rhs.class}" do
1762
+ it 'is true' do
1763
+ (lhs < rhs).should be true
1764
+ end
1765
+ end
1766
+ end
1767
+ end
1768
+ end
1769
+
1770
+ context 'when rhs is equal to lhs' do
1771
+ context 'when both are Decimal128 instances' do
1772
+ let(:rhs) { described_class.new('1.2e12') }
1773
+
1774
+ it 'is false' do
1775
+ (lhs < rhs).should be false
1776
+ end
1777
+ end
1778
+
1779
+ context 'when rhs is of a different type' do
1780
+
1781
+ [
1782
+ 1200000000000,
1783
+ 1200000000000.0,
1784
+ BigDecimal('1.2e12'),
1785
+ ].each do |rhs|
1786
+ context "when rhs is #{rhs.class}" do
1787
+ it 'is false' do
1788
+ (lhs < rhs).should be false
1789
+ end
1790
+ end
1791
+ end
1792
+ end
1793
+ end
1794
+
1795
+ context 'when rhs is greater than lhs' do
1796
+ context 'when both are Decimal128 instances' do
1797
+ let(:rhs) { described_class.new('1.1e12') }
1798
+
1799
+ it 'is false' do
1800
+ (lhs < rhs).should be false
1801
+ end
1802
+ end
1803
+
1804
+ context 'when rhs is of a different type' do
1805
+
1806
+ [
1807
+ 1100000000000,
1808
+ 1100000000000.0,
1809
+ BigDecimal('1.1e12'),
1810
+ ].each do |rhs|
1811
+ context "when rhs is #{rhs.class}" do
1812
+ it 'is false' do
1813
+ (lhs < rhs).should be false
1814
+ end
1815
+ end
1816
+ end
1817
+ end
1818
+ end
1819
+ end
1605
1820
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bson
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.14.1
4
+ version: 4.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tyler Brock
@@ -14,26 +14,27 @@ bindir: bin
14
14
  cert_chain:
15
15
  - |
16
16
  -----BEGIN CERTIFICATE-----
17
- MIIDRDCCAiygAwIBAgIBATANBgkqhkiG9w0BAQsFADAmMSQwIgYDVQQDDBtkcml2
18
- ZXItcnVieS9EQz0xMGdlbi9EQz1jb20wHhcNMjEwMjA5MTQxOTU3WhcNMjIwMjA5
19
- MTQxOTU3WjAmMSQwIgYDVQQDDBtkcml2ZXItcnVieS9EQz0xMGdlbi9EQz1jb20w
20
- ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDRXUgGvH0ZtWwDPc2umdHw
21
- B+INNm6jNTRp8PMyUKxPzxaxX2OiBQk9gLC3zsK9ZmlZu4lNfpHVSCEPoiP/fhPg
22
- Kyfq2xld3Qz0Pki5d5i0/r14343MTKiNiFulLlbbdlN0cXeEFNJHUycZnD2LOXwz
23
- egYGHOl14FI8t5visIWtqRnLXXIlDsBHzmeEZjUZRGSgjC0R3RT/I+Fk5yUhn1w4
24
- rqFyAiW+cjjzmT7mmqT0jV6fd0JFHbKnSgt9iPijKSimBgUOsorHwOTMlTzwsy0d
25
- ZT+al1RiT5zqlAJLxFHwmoYOxD/bSNtKsYl60ek0hK2mISBVy9BBmLvCgHDx5uSp
26
- AgMBAAGjfTB7MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBRbd1mx
27
- fvSaVIwKI+tnEAYDW/B81zAgBgNVHREEGTAXgRVkcml2ZXItcnVieUAxMGdlbi5j
28
- b20wIAYDVR0SBBkwF4EVZHJpdmVyLXJ1YnlAMTBnZW4uY29tMA0GCSqGSIb3DQEB
29
- CwUAA4IBAQCYGRgQbtk+g+Nuwg15p8jb+8bJlwHFHkb8rkLn00OPXLk3uBhImOKZ
30
- mhwwr/8ZBkeE/PBDxkQjeua+NpqSaPr1lvXQaGpHxJzpR/BmSteeoF49jBu0dHaz
31
- MRghinst6ROS1qVRae0z+wkbnufpH/NxdCUufb639nAlZguT2rGqvM6VZCC8eSO9
32
- KfJA7/MEE+qQtiQgJaAUVRaGC8fLtmS555BPjNVITJs+BcGDYWh2clWuqlzjHOp3
33
- YoFhlyUEi7VLlqNH0H/JFttVZK6+qmLelkVNcIYVLeWOB4Lf4VxEiYGEK1ORxsrY
34
- iyYKJJALWY1FAInGRIlvkN+B8o3yIhq1
17
+ MIIDfDCCAmSgAwIBAgIBATANBgkqhkiG9w0BAQUFADBCMRQwEgYDVQQDDAtkcml2
18
+ ZXItcnVieTEVMBMGCgmSJomT8ixkARkWBTEwZ2VuMRMwEQYKCZImiZPyLGQBGRYD
19
+ Y29tMB4XDTIyMDMzMDE5MTcwMloXDTIzMDMzMDE5MTcwMlowQjEUMBIGA1UEAwwL
20
+ ZHJpdmVyLXJ1YnkxFTATBgoJkiaJk/IsZAEZFgUxMGdlbjETMBEGCgmSJomT8ixk
21
+ ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANFdSAa8fRm1
22
+ bAM9za6Z0fAH4g02bqM1NGnw8zJQrE/PFrFfY6IFCT2AsLfOwr1maVm7iU1+kdVI
23
+ IQ+iI/9+E+ArJ+rbGV3dDPQ+SLl3mLT+vXjfjcxMqI2IW6UuVtt2U3Rxd4QU0kdT
24
+ JxmcPYs5fDN6BgYc6XXgUjy3m+Kwha2pGctdciUOwEfOZ4RmNRlEZKCMLRHdFP8j
25
+ 4WTnJSGfXDiuoXICJb5yOPOZPuaapPSNXp93QkUdsqdKC32I+KMpKKYGBQ6yisfA
26
+ 5MyVPPCzLR1lP5qXVGJPnOqUAkvEUfCahg7EP9tI20qxiXrR6TSEraYhIFXL0EGY
27
+ u8KAcPHm5KkCAwEAAaN9MHswCQYDVR0TBAIwADALBgNVHQ8EBAMCBLAwHQYDVR0O
28
+ BBYEFFt3WbF+9JpUjAoj62cQBgNb8HzXMCAGA1UdEQQZMBeBFWRyaXZlci1ydWJ5
29
+ QDEwZ2VuLmNvbTAgBgNVHRIEGTAXgRVkcml2ZXItcnVieUAxMGdlbi5jb20wDQYJ
30
+ KoZIhvcNAQEFBQADggEBAM0s7jz2IGD8Ms035b1tMnbNP2CBPq3pen3KQj7IkGF7
31
+ x8LPDdOqUj4pUMLeefntX/PkSvwROo677TnWK6+GLayGm5xLHrZH3svybC6QtqTR
32
+ mVOLUoZ4TgUmtnMUa/ZvgrIsOeiCysjSf4WECuw7g+LE6jcpLepgYTLk2u1+5SgH
33
+ JVENj0BMkdeZIKkc2G97DSx3Zrmz7QWAaH+99XlajJbfcgvhDso+ffQkTBlOgLBg
34
+ +WyKQ+QTIdtDiyf2LQmxWnxt/W1CmScjdLS7/yXGkkB/D9Uy+sJD747O/B9P238Q
35
+ XnerrtyOu04RsWDvaZkCwSDVzoqfICh4CP1mlde73Ts=
35
36
  -----END CERTIFICATE-----
36
- date: 2022-02-03 00:00:00.000000000 Z
37
+ date: 2022-04-21 00:00:00.000000000 Z
37
38
  dependencies: []
38
39
  description: A fully featured BSON specification implementation in Ruby
39
40
  email:
metadata.gz.sig CHANGED
Binary file