content: /*
   * CDDL HEADER START
   *
   * The contents of this file are subject to the terms of the Common Development
   * and Distribution License (the "License").
   * You may not use this file except in compliance with the License.
   *
   * You can obtain a copy of the license at
   * src/com/vodafone360/people/VODAFONE.LICENSE.txt or
   * http://github.com/360/360-Engine-for-Android
   * See the License for the specific language governing permissions and
   * limitations under the License.
   *
   * When distributing Covered Code, include this CDDL HEADER in each file and
   * include the License file at src/com/vodafone360/people/VODAFONE.LICENSE.txt.
   * If applicable, add the following below this CDDL HEADER, with the fields
   * enclosed by brackets "[]" replaced with your own identifying information:
   * Portions Copyright [yyyy] [name of copyright owner]
   *
   * CDDL HEADER END
   *
   * Copyright 2010 Vodafone Sales & Services Ltd.  All rights reserved.
   * Use is subject to license terms.
   */
  
  package com.vodafone360.people.tests.database;
  
  import java.util.ArrayList;
  import java.util.List;
  import java.util.Random;
  
  import android.database.SQLException;
  import android.util.Log;
  
  import com.vodafone360.people.database.tables.ContactSourceTable;
  
  public class ContactSourceTableTest extends NowPlusTableTestCase{
  	private static final String LOG_TAG = "ContactSourceTableTest";
  	private static final int NO_OF_CONTACT_IDS_TO_TEST = 10;
  	private final String[] SOURCES = {"Zyb","Facebook","WindowsLiveWith very long name"};
  	
  	public ContactSourceTableTest() {
  		super();
  	}
  
  	/**
  	 * creates table that will be tested in this suite
  	 */
  	private void createTable() {
  		try {
  			ContactSourceTable.create(mTestDatabase.getWritableDatabase());
  		} catch (SQLException e) {
  			fail("An exception occurred when creating the table: " + e);
  		}
  	}
  	
  	public void testCreateContactSourceTable(){
  		Log.i(LOG_TAG, "testCreateContactSourceTable start");
  		try{
  			createTable();
  		}catch (Exception e) {
  			fail("An exception occurred when testCreate: " + e);
  		}
  		Log.i(LOG_TAG, "testCreateContactSourceTable PASS");
  	}
  	
  //	*addContactSource(long, String, SQLiteDatabase)
  //	*create(SQLiteDatabase)
  //	deleteAllContactSources(long, SQLiteDatabase)
  //	*fetchContactSources(long, List<String>, SQLiteDatabase)
  //	*private fillUpdateData(ContactSource)
  	
  	public void testTable(){
  		Log.i(LOG_TAG, "testTable start");
  		createTable();
  		Random rand = new Random(System.currentTimeMillis());
  		ArrayList<Long> localContactIdList = new ArrayList<Long>();
  		for(int i=0;i<NO_OF_CONTACT_IDS_TO_TEST;i++){
  			localContactIdList.add(rand.nextLong());
  		}
  		
  		//test for adding and fetchting
  		for(Long localContactId: localContactIdList){
  			ArrayList<String> testList = new ArrayList<String>();
  			for(String source: SOURCES){
  				testList.add(source);
  				assertTrue("addContactSource failed", 
  				ContactSourceTable.addContactSource(localContactId, source, mTestDatabase.getWritableDatabase()) );
  			}
  			
  			List<String> list = new ArrayList<String>(); 
  			assertTrue("fetchContactSources failed", 
  			ContactSourceTable.fetchContactSources(localContactId, list, mTestDatabase.getWritableDatabase()) );
  			
  			if(list.size() != SOURCES.length){
  				fail("IN/OUT tables have diferent lengths");
  			}
  			if(!list.containsAll(testList)||!testList.containsAll(list)){
  				fail("IN/OUT tables have diferent elements");
  			}
  		}
  		
  		//test for deleting and fetching
  		for(Long localContactId: localContactIdList){
  			assertTrue("deleteAllContactSources failed",
  			ContactSourceTable.deleteAllContactSources(localContactId, mTestDatabase.getWritableDatabase()) );
  			
  			List<String> list = new ArrayList<String>(); 
  			assertTrue("fetchContactSources failed",
  			ContactSourceTable.fetchContactSources(localContactId, list, mTestDatabase.getWritableDatabase()) );
  			
  			if(list.size() != 0){
  				fail("table size >0 after delete all sources");
  			}
  		}
  		
  		Log.i(LOG_TAG, "testTable PASS");
  		
  	}
  }
  