def test_write_sam_pairs_skipsIfWrongPosition(self):
        writer = MockWriter()
        
        leftA = SplitRead(**initParams({'name':'readA', 'side':"L", 'position': 10}))
        rightA = SplitRead(**initParams({'name':'readA', 'side':"R", 'position': 5}))
        
        read_group_key = leftA.key()
        read_group_pairs = {read_group_key:[(leftA, rightA, 5)]}

        split_read_from_file = SplitRead(**initParams({'name':'readA', 'side':"L", 'position': 999}))
        split_read_from_file.write_sam_pairs(read_group_pairs, "line\t"*12, writer)
        
        self.assertEqual(0, len(writer.lines()))
    def test_write_sam_pairs_writesLineForEachPairParticipation(self):
        writer = MockWriter()
        stub_line = "readA|"*12
        leftA5 = SplitRead(**initParams({'name':'readA', 'side':"L", 'position': 5}))
        rightA10 = SplitRead(**initParams({'name':'readA', 'side':"R", 'position': 10}))
        rightA15 = SplitRead(**initParams({'name':'readA', 'side':"R", 'position': 15}))
        
        read_group_key = leftA5.key()
        read_group_pairs = {read_group_key:[(leftA5, rightA10), (leftA5, rightA15)]}

        split_read_from_file = SplitRead(**initParams({'name':'readA', 'side':"L", 'position': 5}))
        split_read_from_file.write_sam_pairs(read_group_pairs, stub_line+"\n", writer, "|")
        
        actual_lines = writer.lines()
        self.assertEqual(2, len(actual_lines))
    def test_write_sam_pairs_writesNegativeStrandSamLines(self):
        writer = MockWriter()
        input_line = "readA|147|chr12|5|255|42M|*|0|0|TCACC|DDDDD|XA:i:0"
        left_read = SplitRead(**initParams({'name':'readA', 'side':"L", 'position': 5200, 'split_len':15, 'original_read_len':100}))
        right_read = SplitRead(**initParams({'name':'readA', 'side':"R", 'position': 5000, 'split_len':85, 'original_read_len':100}))
        
        read_group_key = left_read.key()
        read_group_pairs = {read_group_key:[(left_read, right_read)]}

        first_split_read_from_file = SplitRead(**initParams({'name':'readA', 'side':"L", 'position': 5200, 'split_len':15, 'original_read_len':100}))
        first_split_read_from_file.write_sam_pairs(read_group_pairs, input_line+"\n", writer,"|")
        second_split_read_from_file = SplitRead(**initParams({'name':'readA', 'side':"R", 'position': 5000, 'split_len':85, 'original_read_len':100}))
        second_split_read_from_file.write_sam_pairs(read_group_pairs, input_line+"\n", writer,"|")
        
        actual_lines = writer.lines()
        self.assertEqual(2, len(actual_lines))
        self.assertEqual("readA-L-15|115|chr12|5200|255|42M|=|5000|-200|TCACC|DDDDD|XA:i:0", actual_lines[0])
        self.assertEqual("readA-L-15|147|chr12|5000|255|42M|=|5200|200|TCACC|DDDDD|XA:i:0", actual_lines[1])