tests/testthat/test-eclipse_pheno.R

context("Eclipses and planetary phenomena")

test_that("Azimuth and altitude postions", {
  result <- swe_azalt(1234567,1,c(0,50,10),15,1013.25,c(186,22))
  expect_equal(result$xaz, c(114.636188,   8.210881,   8.209274),tolerance = .0000001)
  swe_close()
})

test_that("Ecliptic postions", {
  result <- swe_azalt_rev(1234567,0,c(0, 50,10),c(123,2))
  expect_equal(result$xout[1:2], c(166.0465305159982,  18.0853031826458),tolerance = .0000001)
  swe_close()
})

test_that("Equatorial postions", {
  result <- swe_azalt_rev(1234567,1,c(0, 50,10),c(123,2))
  expect_equal(result$xout[1:2], c(174.78989 , 22.12376),tolerance = .0000001)
  swe_close()
})


test_that("Rise time of Sun", {
  result <- swe_rise_trans_true_hor(1234567.5,0,"",4,1,c(0,50,10),1013.25,15,0)
  expect_equal(result$tret, 1234567.83559187, tolerance = .0000001)
  swe_close()
})

test_that("Heliacal rise of sirus", {
  result <- swe_heliacal_ut(1234567,c(0,50,10),c(1013.25,15,50,0.25),c(25,1,1,1,5,0.8),"sirius",1,260)
  expect_equal(result$return, 0)
  expect_equal(result$dret[1:3],c(1234768.64491623, 1234768.65345790, 1234768.66307595), tolerance=.000001)
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Solar eclipse", {
  result <- swe_sol_eclipse_when_loc(1234567,4,c(0,50,10),FALSE)
  expect_equal(result$return, 4242)
  expect_equal(result$tret[1:7],c(1.23477168584597e+06, 1.23477163960865e+06,0,0,  1.23477171224360e+06,  1.23477168584597e+06,0))
  expect_equal(result$attr[1:11],c( 5.45656645429638e-01, 9.61071876161396e-01,4.36668429108189e-01 , 1.40827740655886e+02, 2.40581275123498e+02,-3.45422559148016e-01 , 1.90452771420542e-01, 2.31444434882052e-01, 5.45656645429638e-01, 43,11))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Solar eclipse on the earth", {
  result <- swe_sol_eclipse_when_glob(1234567,SE$FLG_MOSEPH,SE$ECL_TOTAL+SE$ECL_CENTRAL+SE$ECL_NONCENTRAL,FALSE)
  expect_equal(result$return, 5)
  expect_equal(result$tret[1:9],c(1235273.84604006, 1235273.84229895, 1235273.74011916, 1235273.95201148 ,1235273.78142695 ,1235273.91073758,
                                  1235273.78196505, 1235273.91018579,       0))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Attributes of a solar eclipse for a given geographic position and time", {
  result <- swe_sol_eclipse_how(1234580.19960447,SE$FLG_MOSEPH,c(0,50,10))
  expect_equal(result$return, 0)
  expect_equal(result$attr[1:9],c( 0,  0,  0,   0,  60.62086506454898,
                                   -1.19143795734667,  -1.19143795734667, 178.45733394452094,   0))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Find out the geographic position a central eclipse is central or where a non-central eclipse is maximal", {
  result <- swe_sol_eclipse_where(1234771.68584597,SE$FLG_MOSEPH)
  expect_equal(result$return, 18)
  expect_equal(result$attr[1:12],c( 0.8543063072704876 ,  0.9611528526089881  , 0.8028105727980597, 140.8277403641362184, 229.9817237267510848,
                                     -0.0647264377419630,   0.4278483711380141  , 0.0672014572289063  , 0.8543063072704876,  43,
                                   11,   0))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Finds the next occultation for a body and a given geographic position.", {
  result <- swe_lun_occult_when_loc(1234567,SE$VENUS,"",SE$FLG_MOSEPH+SE$ECL_ONE_TRY,c(0,50,10),FALSE)
  expect_equal(result$return, 32644)
  expect_equal(result$tret[1:6],c(1234620.01091964, 1234619.98320972, 1234619.98379339, 1234620.03675771, 1234620.03728753,0))
  expect_equal(result$attr[1:9],c(45.0754362139716, 101.859216986627, 10375.3000851288,
                                  -3451.9490282791, 41.4943252743968, 9.45639393731195,
                                  9.54926910539598, 0.0325604915761606, 0))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("finds the next occultation of a given body globally", {
  result <- swe_lun_occult_when_glob(1234567,SE$VENUS,"",SE$FLG_MOSEPH+SE$ECL_ONE_TRY,SE$ECL_TOTAL,FALSE)
  expect_equal(result$return, 5)
  expect_equal(result$tret[1:9],c(1234590.44756319 ,1234590.44344933, 1234590.36836142, 1234590.52681093, 1234590.36900640, 1234590.52616638,
                                  1234590.39548933, 1234590.49967049,0))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Compute the geographic location of an occultation for a given tjd.", {
  result <- swe_lun_occult_where(1234590.44756319,SE$VENUS,"",SE$FLG_MOSEPH+SE$ECL_ONE_TRY)
  expect_equal(result$return, 5)
  expect_equal(result$pathpos[1:3],c(157.9771583092420 , 24.8563536921861,0))
  expect_equal(result$attr[1:9],c(39.614607952576, 78.2773510353004, 6127.34368510365,
                                  -3444.52812728212, 4.46760851275411, 43.9348319535477,
                                  43.9516599201838, 0.000165922292213691, 0))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Lunar eclipse at a certain location", {
  result <- swe_lun_eclipse_when_loc(1234567,4,c(0,50,10),FALSE)
  expect_equal(result$return, 20624)
  expect_equal(result$tret,c(1234580.19,0,0,1234580.23691550,0,0,0,1234580.28328264,1234580.19960447,0))
  expect_equal(result$attr[1:11],c(0.71817816677135, 1.74557050319063, 0, 0,
                                   240.642834168763, -0.351168041982899, 0.185656243939104,
                                   0.586658994624941, 0.71817816677135, 12, 58))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Lunar eclipse on earth", {
  result <- swe_lun_eclipse_when(1234567,4,1,FALSE)
  expect_equal(result$return, 4)
  expect_equal(result$tret,c(1234580.16758062,0.00000000 ,1234580.09824349, 1234580.23691550, 1234580.16112524, 1234580.17402406, 1234580.05176974,
                             1234580.28328264  ,     0.00000000  ,     0.00000000  ,     0.00000000  ,     0.00000000 ,     0.00000000   ,    0.00000000,
                              0.00000000    ,   0.00000000 ,      0.00000000 ,      0.00000000    ,   0.00000000 ,     0.00000000))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Lunar eclipse conditions", {
  result <- swe_lun_eclipse_how(1234580.19960447,4,c(0,50,10))
  expect_equal(result$return, 16)
  expect_equal(result$attr[1:11],c(0.718169986750774,1.74556231683580,0 ,0,240.642969834840244,-0.351069739087650,0.185738292657396,  0.586663260830164  ,0.718169986750774,12,58))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Phenomena of Moon (UT)", {
  result <- swe_pheno_ut(1234567,1,4)
  expect_equal(result$return, 4)
  expect_equal(result$attr[1:6],c(149.630721612028, 0.0686075614444923, 30.2944345377085,
                                  0.517849595679598, -6.78321156622476, 0.950568741790746))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Phenomena of Moon (ET)", {
  result <- swe_pheno(1234567,1,4)
  expect_equal(result$return, 4)
  expect_equal(result$attr[1:6],c(154.116100062436, 0.0501597578260507, 25.8196104659902,
                                  0.520358629679155, -6.27357709338102, 0.95516823015598))
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Limiting visibility magnitude", {
  result <- swe_vis_limit_mag(1234567.5,c(0,50,10),c(1013.25,15,20,0.25),c(25,1,1,1,5,0.8),'sirius',260)
  expect_equal(result$return, 1)
  expect_equal(result$dret[1:8],c(5.96884644531082e+00  ,1.10797411875736e+01, 2.24100275575357e+02,-6.18080893675434e+01, 3.52678922475298e+02, -4.14868023984033e+01,   3.02677186429211e+02,-1.46), tolerance=.000001)
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Heliacal event details", {
  result <- swe_heliacal_pheno_ut(1234567.5,c(0,50,10),c(1013.25,15,20,0.25),c(25,1,1,1,5,0.8),'sirius',2,260)
  expect_equal(result$return, 0)
  expect_equal(result$darr[1:28],c( 1.10797411875736e+01,   1.11584553531197e+01
                                    ,  1.10797335338164e+01,   2.24100275575357e+02
                                    ,-6.18080893675434e+01,   3.52678922475298e+02
                                    ,7.28878305551170e+01,   7.28878229013598e+01
                                    ,1.28578646899941e+02,   1.00572920775361e+02
                                    ,2.50000000000000e-01,   8.40408325195312e+00
                                    ,9.99999990000000e+07,   1.23456819963629e+06
                                    ,1.23456756274629e+06,   9.99999990000000e+07
                                    ,   0.00000000000000e+00,   0.00000000000000e+00
                                    ,   0.00000000000000e+00 , -7.65375721556438e-06
                                    ,  -1.46000000000000e+00,   1.23456756274629e+06
                                    ,   1.23456818424277e+06 , -6.21496487408876e-01
                                    ,   9.99999990000000e+07,   0.00000000000000e+00
                                ,  1.00572920775361e+02 ,  1.00000000000000e+02), tolerance=.000001)
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Determine topocentric Arcusvisionis", {
  result <- swe_topo_arcus_visionis(1234567.5,c(0,50,10),c(1013.25,15,20,0.25),c(25,1,1,1,5,0.8),768,-1,124,2,120,0,-45)
  expect_equal(result$return, 0)
  expect_equal(result$tav,12.4801254272461, tolerance=.000001)
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Determine Heliacal angle", {
  result <- swe_heliacal_angle(1234567.5,c(0,50,10),c(1013.25,15,20,0.25),c(25,1,1,1,5,0.8),768,-1,124,120,0,-45)
  expect_equal(result$return, 0)
  expect_equal(result$dret[1:3],c(3.468750, 11.569977, -8.101227), tolerance=.000001)
  expect_equal(result$serr, "")
  swe_close()
})

test_that("Topocentric to Apparent altitude", {
  result <- swe_refrac_extended(2,0,1013.25,15,-0.065,0)
  expect_equal(result$return, 2.2787088)
  expect_equal(result$dret[1:3], c(2.0000000, 2.2787088, 0.2787088), tolerance=.000001)
})

test_that("Apparent to Topocentric altitude", {
  result <- swe_refrac_extended(2,0,1013.25,15,-0.065,1)
  expect_equal(result$return, 1.701016)
  expect_equal(result$dret[1:3], c(1.701016, 2.000000, 0.298984), tolerance=.000001)
})

Try the swephR package in your browser

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

swephR documentation built on May 31, 2023, 5:31 p.m.