Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    aiuto sul codice

    ciao a tutti!
    Ho bisogno di una bella mano sul codice di un metodo che non riesco a svolgere.
    Vi Posto il test a cui viene sottoposta la classe, la classe stessa e documentazione.
    Spero possiate aiutarmi!!!!!
    nei commenti c'è scritto quello che dovrebbe fare la classe.

    //TEST


    codice:
    import java.util.Calendar;
    
    import com.jds.architecture.utilities.IntArrayToCalendar;
    
    import junit.framework.TestCase;
    
    /**
     * 
     */
    public class IntArrayToCalendarTest extends TestCase {
    
    	public static final int[] validTarget1 = {2004, 1, 1};
    	public static final int[] validTarget2 = {2004, 12, 31};
    	public static final int[] validTarget3 = {2004, 1, 1, 1};
    	public static final int[] validTarget4 = {2004, 120, 310};
    	public static final int[] errorTarget1 = {2004, 1};
    	public static final String[] errorTarget2 = {"2004", "5", "15"};
    	public static final int[] errorTarget3 = null;
    	
    	
    	public void testTransformNormal() {
    		IntArrayToCalendar intArrayToCalendar = 
    			new IntArrayToCalendar();
    
    //		*assertion implementation*
    //		Calendar test1 = Calendar.getInstance();
    //		test1.set(Calendar.YEAR, validTarget1[0]);
    //		test1.set(Calendar.MONTH, validTarget1[1] - 1);
    //		test1.set(Calendar.DATE, validTarget1[2]);
    //		
    //		Calendar test2 = Calendar.getInstance();
    //		test2.set(Calendar.YEAR, validTarget2[0]);
    //		test2.set(Calendar.MONTH, validTarget2[1] - 1);
    //		test2.set(Calendar.DATE, validTarget2[2]);
    //		
    //		Calendar test3 = Calendar.getInstance();
    //		test3.set(Calendar.YEAR, validTarget3[0]);
    //		test3.set(Calendar.MONTH, validTarget3[1] - 1);
    //		test3.set(Calendar.DATE, validTarget3[2]);
    //		
    //		assertEquals(test1, intArrayToCalendar.transform(validTarget1));
    //		assertEquals(test2, intArrayToCalendar.transform(validTarget2));
    //		assertEquals(test3, intArrayToCalendar.transform(validTarget3));
    		
    		Calendar temp1 = (Calendar)(intArrayToCalendar.transform(validTarget1));
    		Calendar temp2 = (Calendar)(intArrayToCalendar.transform(validTarget2));
    		Calendar temp3 = (Calendar)(intArrayToCalendar.transform(validTarget3));
    		
    		//1.01
    		assertEquals(2004, temp1.get(Calendar.YEAR));
    		assertEquals(0, temp1.get(Calendar.MONTH));
    		assertEquals(1, temp1.get(Calendar.DATE));
    		
    		//1.02
    		assertEquals(2004, temp2.get(Calendar.YEAR));
    		assertEquals(11, temp2.get(Calendar.MONTH));
    		assertEquals(31, temp2.get(Calendar.DATE));
    		
    		//1.03
    		assertEquals(2004, temp3.get(Calendar.YEAR));
    		assertEquals(0, temp3.get(Calendar.MONTH));
    		assertEquals(1, temp3.get(Calendar.DATE));
    		
    		//1.04
    		try {
    			Calendar temp4 = (Calendar)(intArrayToCalendar.transform(validTarget3));
    		} catch(Exception e) {
    			fail("exception not expected - Xref 1.04");
    		}
    		
    	}
    	
    	public void testTransformError() {
    		IntArrayToCalendar intArrayToCalendar = 
    			new IntArrayToCalendar();
    		
    		//2.01
    		try {
    			intArrayToCalendar.transform(errorTarget1);
    		} catch (ArrayIndexOutOfBoundsException ex) {
    			return;
    		} catch (Exception e) {
    			fail("invalid exception - Xref 2.01");
    		}
    		fail("invalid exception - Xref 2.01");
    		
    		
    		//2.02
    		try {
    			intArrayToCalendar.transform(errorTarget2);
    		} catch (ClassCastException ex) {
    			return;
    		} catch (Exception e) {
    			fail("invalid exception - Xref 2.02");
    		}
    		fail("invalid exception - Xref 2.02");
    		
    		//2.03
    		try {
    			intArrayToCalendar.transform(errorTarget3);
    		} catch (NullPointerException ex) {
    			return;
    		} catch (Exception e) {
    			fail("invalid exception - Xref 2.03");
    		}
    		fail("invalid exception - Xref 2.03");
    		
    	}
    
    }
    
    
    //Classe
    
    
    import java.util.Calendar;
    import java.util.Date;
    
    
    /**
     * Transform strategy object used to transform an array of integers into a Calendar object
     * The Calendar used will use the locale as specified by a non-lenient, no-argument Calendar
     * as obtained by Calendar.getInstance(), that will then be populated by the values of the
     * integer array.
     * 
     * The overriden method <code>transform(Object target)</code> accepts an integer array containing
     * at least 3 integers representing the date to be transformed.  Extra elements in the array are 
     * ignored.  RuntimeExceptions  will be thrown when any other argument is passed to the method.
     * 
     * Classes that implement the <code>TransformStrategy</code> interface should be 
     * passed to <code>Transformer</code> objects via their constructor or to the 
     * <code>Transformer.transform(TransformStrategy, Object)</code> method.
     *  
     * 
     * @see Transformer
     * @see TransformStrategy
     */
    
    public class IntArrayToCalendar implements  TransformStrategy {
    
    	/**
    	 * Returns an equivalent Calendar object representation of the 
    	 * input array of integers {year, month, date}. 
    	 * 
    	 * @param target array of integers containing 3 elements to be transformed
    	 * @return Calendar object equivalent of the argument
    	 */
    	
    
    	public Object transform(Object target) {
    		// TODO Auto-generated method stub
    		
    		
    	}
    
    }
    //DOCUMENTAZIONE

    transform
    public java.lang.Object transform(java.lang.Object target)Returns an equivalent Calendar object representation of the input array of integers {year, month, date}.

    Parameters:
    target - array of integers containing 3 elements to be transformed
    Returns:
    Calendar object equivalent of the argument

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Qui la soluzione. E per favore usa il tag CODE
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    18
    vengono verificate tutti gli assert eccetto quello del validTarget4 (non ho ben capito il senso di quei valori)

    codice:
    public Object transform(Object target) {  		
        int[] arrDate = (int[]) target;  		
        int iYear = arrDate[0]; 		
        int iMonth = arrDate[1]; 		
        int iDay = arrDate[2];  		
        
        Calendar calendar = Calendar.getInstance(); 		
        calendar.set(iYear, iMonth - 1, iDay);  		
        
        return calendar;  	
    }
    ciao

  4. #4
    sei un grande!!!!!!
    giravo intorno alla soluzione da qualche ora!
    grazie!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    18
    ho capito il senso di quell'altro valore eheh...


    codice:
    	
    	public Object transform(Object target) {
    
    		int[] myTarget = (int[]) target;
    
    		int iYear = myTarget[0];
    		int iMonth = myTarget[1];
    		int iDay = myTarget[2];
    		if(iMonth>12){
    			//Se il mese indicato supera il n.12 allora prendo il primo giorno e primo mese
    			iMonth=1;
    			iDay = 1;
    		}else{
    			//Verifico la correttezza del giorno calcolando l'ultimo giorno valido del mese indicato
    			Calendar c = Calendar.getInstance();
    			c.set(iYear, iMonth-1, 1);
    			c.add(Calendar.MONTH, 1);
    			c.add(Calendar.DATE, -1);
    
    			//Se il giorno indicato è superiore all'ultimo giorno del mese
    			if(iDay>c.get(Calendar.DATE)){
    				//prendo il primo giorno
    				iDay=1;
    			}
    		}
    		
    		Calendar calendar = Calendar.getInstance();
    		calendar.set(iYear, iMonth - 1, iDay);
    		
    		return calendar;
    
    	}
    ciao

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,480

    Moderazione

    Originariamente inviato da minguccio
    aiuto sul codice
    Usa titoli più significativi di questo in futuro, come indicato nel Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.