using Random, StatsBase, Distributions using Graphs using AbstractMCMC: MCMCSerial #, MCMCThreads, MCMCDistributed using CairoMakie using Test using Revise using MultilevelChainSampler rng = Random.default_rng() function chain(g) x = [ rand(g) ] for i=1:1000 y = MultilevelChainSampler.propose(rng, g, x[end]) push!(x, y) end return x end w = CyclicWalk(-1,1,.5) x = chain(w) @test abs( mean(x) ) < 0.1 @test abs( std(x) - .5) < 0.1 er = ErdosRenyi(1000) x = chain(er) c = is_connected.(x) @test mean(c) > .5 k = mean.(degree.(x)) @test abs( mean(k) - er.n * er.p ) < 1