tr_string <- "
((A,A),A 1); ((B.1,B,C),B);
((D,D_1),D.1);
((('A 1','A 1'),A.1),'A 1');
((('A A A','A A A'),A.1),'A 1');

((((A_1:0.1,B__2:0.1)cats:0.1,(A_1:0.1,A_1:0.1)dogs:0.1)mammals:0.1):0.1)fur:0.1;
"
file_dup <- tempfile()
cat(tr_string, file = file_dup, sep = "\n")

############################################################################
## parse_newick                                                           ##
############################################################################

context("parse_newick")
test_that("parse newick works correctly", {
  prsed_str <- parse_newick(file_dup)
  expect_true(is.character(prsed_str))
  expect_equal(length(prsed_str), 6L)
})

############################################################################
## deduplicate_labels                                                     ##
############################################################################

context("deduplicate_labels")

test_that("deduplicate labels works on made up example", {
  expect_warning(
    dedup_tr <- deduplicate_labels(file_dup),
    "Some tip labels were duplicated"
  )
  expect_true(file.exists(dedup_tr))
  expect_warning(phylo_tr <- rncl::read_newick_phylo(file = dedup_tr), "Dropping singleton")
  expect_true(inherits(phylo_tr, "multiPhylo"))
  expect_equal(phylo_tr[[6]]$tip.label, c("A_1_1", "B__2", "A_1_2", "A_1"))
})


test_that("deduplicate labels works on a OTL study", {
  skip_on_cran()
  expect_warning(
    get_study_tree(study_id = "pg_710", tree_id = "tree1277", tip_label = "ott_taxon_name"),
    "Some tip labels were duplicated"
  )
})

unlink(file_dup)
