using Random, StatsBase, Distributions
using Graphs
using AbstractMCMC: MCMCSerial #, MCMCThreads, MCMCDistributed
using CairoMakie

using Test
using Revise
using MultilevelChainSampler
using CSV, DataFrames


w = CyclicWalk()
s = MetropolisHastings(w)

f = LogDensity(x->-x^2/2)
c = sample(f, s, MCMCSerial(), 300, 4)

# Test conversion
df = convert(Vector{DataFrame}, c)
c2 = convert(RejectionChains, df)

autocov(c)

# Test multilevel 
@test all( abs.( empirical_cdf(c, .5) .- 0.78045 ) .< 0.1 )

g = MultilevelLogDensity([f,f])
s3 = ChristenFox(w, true)
c3 = sample(g, s3, MCMCSerial(), 300, 4)