# tests/testthat/test_bignum.R In openssl: Toolkit for Encryption, Signatures and Certificates Based on OpenSSL

```context("Bignum")

test_that("Basic bignum math", {
# Regular numbers
x1 <- 123
y1 <- 456

# Bignum numbers
x2 <- bignum(123)
y2 <- bignum(456)

expect_true(x1 == x2)
expect_true(y1 == y2)
expect_true(x2 != y2)
expect_true(x2 < y2)
expect_true(x2 <= y2)
expect_false(x2 > y2)
expect_false(x2 >= y2)
expect_false(x1 == y2)
expect_true(x1+y1 == x2+y2)
expect_true(y1-x1 == y2-x2)
expect_true(x1*y1 == x2*y2)
expect_true(y2-y2 == 0)
expect_true(y2 %% x2 == y1 %% x1)
expect_true(y2 %/% x2 == y1 %/% x1)
expect_true(x2 %% y2 == x1 %% y1)
expect_error(x2-y2, "")
expect_error(x2/y2, "integer")
})

test_that("Bignum arithmetic", {
x <- bignum(123L)
y <- bignum("123456789123456789")
z <- bignum("D41D8CD98F00B204E9800998ECF8427E", hex = TRUE)

# Basic arithmetic
div <- z %/% y
mod <- z %% y
z2 <- div * y + mod
expect_equal(z2, z)
expect_true(div < z)
})

test_that("Bignum to integer", {
for(x in c(0, 123, .Machine\$integer.max)){
expect_equal(x, as.integer(bignum(x)))
}
expect_equal(as.integer(bignum(.Machine\$integer.max + 1)), NA_integer_)
})
```

## Try the openssl package in your browser

Any scripts or data that you put into this service are public.

openssl documentation built on July 31, 2018, 1:04 a.m.