#!/usr/bin/python

'''Unit tests for DRS_buffer'''

import sys

if sys.argv[1] == 'cpython':
	import drs_buffer_mod
else:
	import cython_drs_buffer_mod as drs_buffer_mod

def simple_index():
	'''Test simple indexing'''
	buffer_ = drs_buffer_mod.DRS_buffer()
	buffer_.extend('abc')
	character = chr(buffer_[1])
	if character == 'b':
		return True
	else:
		print >> sys.stderr, "Second value was not 'b'", character
		return False

def simple_slice():
	'''Test simple slicing'''
	buffer_ = drs_buffer_mod.DRS_buffer()
	buffer_.extend('abcdefghijklmnopqrstuvwxyz')
	string = ''.join(chr(character) for character in buffer_[5:10])
	if string == 'fghij':
		return True
	else:
		print >> sys.stderr, "step 1 slice was not 'fghij'", string
		return False

def simple_delete_slice():
	'''Test simple slicing'''
	buffer_ = drs_buffer_mod.DRS_buffer()
	buffer_.extend('abcdefghijklmnopqrstuvwxyz')
	del buffer_[0:25]
	string = ''.join(chr(character) for character in buffer_[:])
	if string == 'z':
		return True
	else:
		print >> sys.stderr, "simple delete slice was not 'z'", string
		return False

def main():
	'''Main function'''
	all_good = True

	all_good &= simple_index()
	all_good &= simple_slice()
	all_good &= simple_delete_slice()

	if all_good:
		print >> sys.stderr, '%s: All tests passed' % sys.argv[0]
	else:
		print >> sys.stderr, '%s: One or more tests failed' % sys.argv[0]
		sys.exit(1)
	
main()