+++ /dev/null
-#ifndef SAMHEADER_VALIDATORTEST_H
-#define SAMHEADER_VALIDATORTEST_H
-
-#include "api/SamHeader.h"
-#include <gtest/gtest.h>
-#include <iostream>
-#include <string>
-
-TEST(SamHeader_ValidatorTest, EmptyHeader) {
-
- BamTools::SamHeader header("");
- std::string headerText = header.ToString();
- ASSERT_TRUE(headerText.empty());
- EXPECT_TRUE(header.IsValid());
-}
-
-TEST(SamHeader_ValidatorTest, Version) {
-
- BamTools::SamHeader header("");
-
- // empty - VALID HEADER
- header.Version = "";
- EXPECT_TRUE(header.IsValid());
-
- // normal - VALID HEADER
- header.Version = "1.1";
- EXPECT_TRUE(header.IsValid());
- header.Version = "11.1";
- EXPECT_TRUE(header.IsValid());
- header.Version = "1.11";
-
- // no period - INVALID HEADER
- header.Version = "11";
- EXPECT_FALSE(header.IsValid());
-
- // no major - INVALID HEADER
- header.Version = ".1";
- EXPECT_FALSE(header.IsValid());
-
- // invalid major - INVALID HEADER
- header.Version = "a.1";
- EXPECT_FALSE(header.IsValid());
-
- // no minor - INVALID HEADER
- header.Version = "1.";
- EXPECT_FALSE(header.IsValid());
-
- // invalid minor - INVALID HEADER
- header.Version = "1.a";
- EXPECT_FALSE(header.IsValid());
-}
-
-TEST(SamHeader_ValidatorTest, GroupOrder) {
-
- BamTools::SamHeader header("");
-
- // empty - VALID HEADER
- header.GroupOrder = "";
- EXPECT_TRUE(header.IsValid());
-
- // normal group order- VALID HEADER
- header.GroupOrder = "none";
- EXPECT_TRUE(header.IsValid());
- header.GroupOrder = "query";
- EXPECT_TRUE(header.IsValid());
- header.GroupOrder = "reference";
- EXPECT_TRUE(header.IsValid());
-
- // invalid group order - INVALID HEADER
- header.GroupOrder = "fake";
- EXPECT_FALSE(header.IsValid());
-}
-
-TEST(SamHeader_ValidatorTest, SortOrder) {
-
- BamTools::SamHeader header("");
-
- // empty - VALID HEADER
- header.SortOrder = "";
- EXPECT_TRUE(header.IsValid());
-
- // normal sort order- VALID HEADER
- header.SortOrder = "coordinate";
- EXPECT_TRUE(header.IsValid());
- header.SortOrder = "queryname";
- EXPECT_TRUE(header.IsValid());
- header.SortOrder = "unsorted";
- EXPECT_TRUE(header.IsValid());
-
- // invalid sort order - INVALID HEADER
- header.SortOrder = "fake";
- EXPECT_FALSE(header.IsValid());
-}
-
-TEST(SamHeader_ValidatorTest, SequenceDictionary) {
-
- BamTools::SamHeader header("");
- BamTools::SamSequence sequence;
-
- // --------------------------------
- // empty - VALID HEADER
-
- header.Sequences.Clear();
- EXPECT_TRUE(header.IsValid());
-
- // --------------------------------
- // normal - VALID HEADER
-
- sequence.Name = "MT";
- sequence.Length = "1000";
- header.Sequences.Add(sequence);
- EXPECT_TRUE(header.IsValid());
-
- // normal ( length == MIN )
- sequence.Name = "MT";
- sequence.Length = "1";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_TRUE(header.IsValid());
-
- // normal ( length == MAX )
- sequence.Name = "MT";
- sequence.Length = "536870911";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_TRUE(header.IsValid());
-
- // ---------------------------------
- // missing required info - INVALID HEADER
-
- // missing ID
- sequence.Name = "";
- sequence.Length = "1000";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-
- // missing length
- sequence.Name = "MT";
- sequence.Length = "";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-
- // -------------------------------------
- // improper SN format - INVALID HEADER
-
- // starts with *
- sequence.Name = "*MT";
- sequence.Length = "1000";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-
- // starts with =
- sequence.Name = "=MT";
- sequence.Length = "1000";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-
- // -----------------------------------------
- // nonunique ID - INVALID HEADER
-
- // this behavior is blocked by SamSequenceDictionary
- // see SamSequenceDictionaryTest::AddDuplicateOk
-
- // --------------------------------------------
- // invalid length - INVALID HEADER
-
- // length = 0 (MIN == 1)
- sequence.Name = "MT";
- sequence.Length = "0";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-
- // length = -1
- sequence.Name = "MT";
- sequence.Length = "-1";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-
- // length = MAX + 1
- sequence.Name ="MT";
- sequence.Length = "536870912";
- header.Sequences.Clear();
- header.Sequences.Add(sequence);
- EXPECT_FALSE(header.IsValid());
-}
-
-TEST(SamHeader_ValidatorTest, ReadGroupDictionary) {
-
- BamTools::SamHeader header("");
- BamTools::SamReadGroup readGroup;
-
- // ---------------------------------
- // empty - VALID HEADER
-
- header.ReadGroups.Clear();
- EXPECT_TRUE(header.IsValid());
-
- // ---------------------------------
- // normal - VALID HEADER
-
- readGroup.ID = "Group123";
- readGroup.PlatformUnit = "PU001";
-
- // technology: none
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: capillary
- readGroup.SequencingTechnology = "CAPILLARY";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: Helicos
- readGroup.SequencingTechnology = "HELICOS";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: Illumina
- readGroup.SequencingTechnology = "ILLUMINA";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: IonTorrent
- readGroup.SequencingTechnology = "IONTORRENT";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: 454
- readGroup.SequencingTechnology = "LS454";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: Pacific Bio
- readGroup.SequencingTechnology = "PACBIO";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // technology: Solid
- readGroup.SequencingTechnology = "SOLID";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_TRUE(header.IsValid());
-
- // ---------------------------------
- // missing ID - INVALID HEADER
-
- readGroup.ID = "";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_FALSE(header.IsValid());
-
- // -----------------------------------------
- // nonunique ID - INVALID HEADER
-
- // this behavior is blocked by SamReadGroupDictionary
- // see SamReadGroupDictionaryTest::AddDuplicateOk
-
- // ------------------------------------------
- // nonunique platform unit - INVALID HEADER
-
- BamTools::SamReadGroup dupPU("Group1");
- BamTools::SamReadGroup dupPU2("Group2");
- dupPU.PlatformUnit = "PU001";
- dupPU2.PlatformUnit = "PU001";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(dupPU);
- header.ReadGroups.Add(dupPU2);
- EXPECT_FALSE(header.IsValid());
-
- // ------------------------------------------------
- // invalid sequencing technology - INVALID HEADER
-
- readGroup.SequencingTechnology = "fake";
- header.ReadGroups.Clear();
- header.ReadGroups.Add(readGroup);
- EXPECT_FALSE(header.IsValid());
-}
-
-#endif // SAMHEADER_VALIDATORTEST_H