test_that("Test Case 1: json2csv works on sample data (JSON_sample), check df shape and column names",{
    csv_df <- json2csv(JSON_sample, protein_name="A")
    expect_equal(unique(csv_df$proteinName), "A")
    expect_equal(nrow(csv_df),183)
    expect_equal(ncol(csv_df),17)

    col_names<-colnames(csv_df)
    expect_equal(col_names[1],'proteinName')
    expect_equal(col_names[2],'position')
    expect_equal(col_names[3],'count')
    expect_equal(col_names[4],'lowSupport')
    expect_equal(col_names[5],'entropy')
    expect_equal(col_names[6],'indexSequence')
    expect_equal(col_names[7],'index.incidence')
    expect_equal(col_names[8],'major.incidence')
    expect_equal(col_names[9],'minor.incidence')
    expect_equal(col_names[10],'unique.incidence')
    expect_equal(col_names[11],'totalVariants.incidence')
    expect_equal(col_names[12],'distinctVariant.incidence')
    expect_equal(col_names[13],'multiIndex')
    expect_equal(col_names[14],'averageEntropy')
    expect_equal(col_names[15],'highestEntropy.position')
    expect_equal(col_names[16],'highestEntropy')
    expect_equal(col_names[17],'host')


})

test_that("Test Case 2: json2csv works on sample data (JSON_sample), check data integrity",{
    csv_df <- json2csv(JSON_sample, protein_name="A")

    expect_equal(unique(csv_df$highestEntropy.position),66)
    expect_equal(unique(csv_df$highestEntropy),5.1592951)
    expect_equal(unique(csv_df$averageEntropy),1.81526603)
    expect_equal(unique(csv_df$host), 'unknown host')

    fifthRow <- csv_df[5,]
    expect_equal(fifthRow$proteinName, 'A')
    expect_equal(fifthRow$position, 5)
    expect_equal(fifthRow$count, 4424)
    expect_equal(fifthRow$lowSupport, FALSE)

    expect_equal(fifthRow$entropy, 1.9135753)
    expect_equal(fifthRow$indexSequence, 'PKPQRKTKR')
    expect_equal(fifthRow$index.incidence, 76.243225)
    expect_equal(fifthRow$major.incidence, 7.617541)
    expect_equal(fifthRow$minor.incidence, 13.743219)
    expect_equal(fifthRow$unique.incidence, 2.3960219)

    expect_equal(fifthRow$totalVariants.incidence, 23.75678)
    expect_equal(fifthRow$distinctVariant.incidence, 16.745956)
    expect_equal(fifthRow$multiIndex, FALSE)
})
