Nothing
set.seed(42)
fitness_function <- function(values){
return(values[1]+values[2]+values[3])
}
test_that("Particle new work", {
expect_error(Particle$new())
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)), #length(values) != length(values_ranges)
values = c(10,10,10,10),
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5),
inertia = 1))
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)), # no values
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5),
inertia = 1))
expect_error(Particle$new(values = c(1,8,5), # no values_ranges
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5),
inertia = 1))
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)), # no fitness function
values = c(1,8,5),
acceleration_coefficient = c(0.5,0.5),
inertia = 1))
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)), # fitness_function is not a function
values = c(1,8,5),
fitness_function = 2,
acceleration_coefficient = c(0.5,0.5),
inertia = 1))
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)),
values = c(1,8,5),
fitness_function = fitness_function, # no acceleration coefficient
inertia = 1))
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)),
values = c(1,8,5),
fitness_function = fitness_function,
acceleration_coefficient = c(1), # there is only one acceleration coefficient
inertia = 1))
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)),
values = c(1,8,5),
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5))) # there is no inertia
expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)),
values = c(1,8,5),
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5),
inertia = "hey")) # inertia is not a numeric
expect_failure(expect_error(Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)),
values = c(1,8,5),
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5),
inertia = 1)))
})
particle_test <- Particle$new(values_ranges = list(c(0,10),c(0,10),c(0,10)),
values = c(1,8,5),
fitness_function = fitness_function,
acceleration_coefficient = c(0.5,0.5),
inertia = 1)
test_that("Particle private field access", {
expect_error(particle_test$fitness <- 0)
expect_error(particle_test$acceleration_coefficient <- 0)
expect_error(particle_test$fitness_function <- 0)
expect_error(particle_test$inertia <- 0)
expect_error(particle_test$personal_best_fitness <- 0)
expect_error(particle_test$personal_best_values <- 0)
expect_error(particle_test$values <- 0)
expect_error(particle_test$velocity <- 0)
expect_error(particle_test$values_ranges <- 0)
expect_failure(expect_error(particle_test$acceleration_coefficient))
expect_failure(expect_error(particle_test$fitness))
expect_failure(expect_error(particle_test$fitness_function))
expect_failure(expect_error(particle_test$inertia))
expect_failure(expect_error(particle_test$personal_best_fitness))
expect_failure(expect_error(particle_test$personal_best_values))
expect_failure(expect_error(particle_test$values))
expect_failure(expect_error(particle_test$values_ranges))
expect_failure(expect_error(particle_test$velocity))
})
test_that("Particle get_fitness", {
expect_error(particle_test$get_fitness(122))
expect_equal(particle_test$get_fitness()$fitness,14)
})
test_that("Particle update",{
expect_equal(particle_test$update(c(10,10,10))$values,c(5.2,8.9,7.3),tolerance = 0.01)
})
test_that("particle update_personal_best_fitness",{
particle_test$update_personal_best_fitness()
expect_equal(particle_test$personal_best_values,c(5.2,8.9,7.3),tolerance=0.01)
expect_equal(particle_test$personal_best_fitness,21.5,tolerance=0.01)
})
test_that('Particle print',{
expect_output(particle_test$print(),'Particle:')
expect_output(particle_test$print(),'Values 1:')
expect_output(particle_test$print(),'Values 2:')
expect_output(particle_test$print(),'Values 3:')
expect_output(particle_test$print(),'fitness :')
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.