use criterion::{criterion_group, criterion_main, BenchmarkId, Criterion};
use std::hint::black_box;

fn canvas_benchmark(c: &mut Criterion) {
    let input = qrcodegen::QrCode::encode_text("otpauth://totp/GitHub:test?issuer=GitHub&secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=8&period=60&algorithm=SHA256", qrcodegen::QrCodeEcc::Medium).unwrap();
    c.bench_with_input(
        BenchmarkId::new("qrcodegen-image", "draw_canvas"),
        black_box(&input),
        |b, i| {
            b.iter(|| {
                let _img = qrcodegen_image::draw_canvas(i.clone());
            })
        },
    );
}

fn png_benchmark(c: &mut Criterion) {
    let input = "otpauth://totp/GitHub:test?issuer=GitHub&secret=KRSXG5CTMVRXEZLUKN2XAZLSKNSWG4TFOQ&digits=8&period=60&algorithm=SHA256";
    c.bench_with_input(
        BenchmarkId::new("qrcodegen-image", "draw_png"),
        black_box(&input),
        |b, i| {
            b.iter(|| {
                let _img = qrcodegen_image::draw_png(i);
            })
        },
    );
}

criterion_group!(benches, canvas_benchmark, png_benchmark);
criterion_main!(benches);
