def test_004_t (self):
        # just to see if when syms_per_frame=0, it is still working.
        M = 16
        syms_per_frame = 1
        num_frame = int(math.pow(2,10))
        start = 5
        end = 9
        zero_pads = 1
        extra_pad = False
        sel_preamble = 1
        sel_eq = 2
        # preamble = [0]*M*zero_pads+[0]*4+[1, -1j, -1, 1j]*3+[0]*(M-end-1)+[0]*M*zero_pads
        if sel_preamble == 0: # standard one vector center preamble [1,-j,-1,j]
            preamble = [0]*M*zero_pads+[0]*4+[1, -1j, -1, 1j]+[1, -1j, -1]+[0]*(M-end-1-1)+[0]*M*zero_pads
        elif sel_preamble == 1: # standard preamble with triple repetition
            preamble = [0]*M*zero_pads+([0]*4+[1, -1j, -1, 1j]+[1, -1j, -1]+[0]*(M-end-1-1))*3+[0]*M*zero_pads
        elif sel_preamble ==2: # IAM-R preamble [1, -1,-1, 1]
            preamble = [0]*M*zero_pads+[0]*4+[1, -1, -1, 1]+4+[1, -1, -1]+[0]*(M-end-1-1)+[0]*M*zero_pads
        else: # standard one vector center preamble [1,-j,-1,j]
            preamble = [0]*M*zero_pads+[0]*4+[1, -1j, -1, 1j]+[1, -1j, -1]+[0]*(M-end-1-1)+[0]*M*zero_pads

        if extra_pad:
            preamble.extend(M*[0])

        # for i in range(len(preamble)):
     #      print("i= "+str(i%M)+" "+str(preamble[i]))
     #    print("end")

        src_data=list()
        expected_result = list()
        # e = 0 # exp. res index
        for i in range(num_frame):
            expected_result.extend(preamble)
            for k in range(M*2*syms_per_frame):
                temp = int(random.random()*10)
                src_data.append(temp)
                expected_result.append(temp)



        src = blocks.vector_source_c(src_data,vlen=M)
        ipr = fbmc_insert_preamble_mu_vcvc(M=M, syms_per_frame=syms_per_frame, start=start, end=end, sel_eq=sel_eq, sel_preamble=sel_preamble, zero_pads=zero_pads, extra_pad=extra_pad)
        dst = blocks.vector_sink_c(vlen=M)
        self.tb.connect(src,ipr,dst)
        self.tb.run ()
        # check data
        result_data = dst.data()

        # print len(result_data)
        # print len(expected_result)

        # for i in range(len(result_data)):
        #   print(str(i/M)+"-"+str(i%M)+" "+str(result_data[i])+" "+str(expected_result[i]))
        
        # print result_data
        self.assertComplexTuplesAlmostEqual(tuple(expected_result),tuple(result_data))
    def test_001_t(self):
        M = 256
        syms_per_frame = 4
        num_frame = int(math.pow(2, 10))
        start = 4
        end = 11
        zero_pads = 3
        extra_pad = True
        sel_preamble = 1
        # preamble = [0]*M*zero_pads+[0]*4+[1, -1j, -1, 1j]*3+[0]*(M-end-1)+[0]*M*zero_pads
        if sel_preamble == 0:  # standard one vector center preamble [1,-j,-1,j]
            preamble = [0] * M * zero_pads + [0] * 4 + [1, -1j, -1, 1j] * 2 + [
                0
            ] * (M - end - 1) + [0] * M * zero_pads
        elif sel_preamble == 1:  # standard preamble with triple repetition
            preamble = [0] * M * zero_pads + (
                [0] * 4 + [1, -1j, -1, 1j] * 2 + [0] *
                (M - end - 1)) * 3 + [0] * M * zero_pads
        elif sel_preamble == 2:  # IAM-R preamble [1, -1,-1, 1]
            preamble = [0] * M * zero_pads + [0] * 4 + [1, -1, -1, 1] * 2 + [
                0
            ] * (M - end - 1) + [0] * M * zero_pads
        else:  # standard one vector center preamble [1,-j,-1,j]
            preamble = [0] * M * zero_pads + [0] * 4 + [1, -1j, -1, 1j] * 2 + [
                0
            ] * (M - end - 1) + [0] * M * zero_pads

        if extra_pad:
            preamble.extend(M * [0])

    # for i in range(len(preamble)):
    #    	print("i= "+str(i%M)+" "+str(preamble[i]))
    #    print("end")

        src_data = list()
        expected_result = list()
        # e = 0 # exp. res index
        for i in range(num_frame):
            expected_result.extend(preamble)
            for k in range(M * 2 * syms_per_frame):
                temp = int(random.random() * 10)
                src_data.append(temp)
                expected_result.append(temp)

        src = blocks.vector_source_c(src_data, vlen=M)
        ipr = fbmc_insert_preamble_mu_vcvc(M=M,
                                           syms_per_frame=syms_per_frame,
                                           start=start,
                                           end=end,
                                           sel_eq=0,
                                           sel_preamble=sel_preamble,
                                           zero_pads=zero_pads,
                                           extra_pad=extra_pad)
        dst = blocks.vector_sink_c(vlen=M)
        self.tb.connect(src, ipr, dst)
        self.tb.run()
        # check data
        result_data = dst.data()

        # print len(result_data)
        # print len(expected_result)

        # for i in range(len(result_data)):
        # 	print(str(i/M)+"-"+str(i%M)+" "+str(result_data[i])+" "+str(expected_result[i]))

        # print result_data
        self.assertComplexTuplesAlmostEqual(tuple(expected_result),
                                            tuple(result_data))