Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-01-2006, 12:26   #1
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
[TASK 8.2.2] Pair Programming: Ufo13 + thebol

Benissimo partiamo subito!
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:29   #2
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Prima la test list
fek è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:44   #3
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Test List:

- Le Gem appartenenti ad un GemGroup non vengono disegnate.

- Dato un GemGroup testiamo che la texture caricata per disegnare il GemGroup sia la texture corretta.

- Dato un GemGroup testiamo che vengano rilevate le tile di tipo "angolo_alto_sx, angolo_alto_dx etc...", i bordi (alto, sx, dx, basso) e i riempimenti. Il tutto nelle corrette posizioni.

- Dato un gruppo 3x3 testiamo che ai corrispondenti angoli, bordi e riempimenti vengano disegnate le "tile" corrette.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 12:44   #4
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da fek
Prima la test list
dammi il tempo
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:03   #5
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
ecco il primo test

Codice:
public class TestGemGroupsDrawing extends TestCase
{
    private Grid grid;
    
    private MockTimer timer;
    
    public void setUp()
    {
        grid = Grid.createForTesting();

        timer = new MockTimer();
    }
    
    public void testGroupedGemIsNotDrawn()
    {
        MockEngine engine = new MockEngine();

        Gem gem1 = Gem.diamond(3500);
        Gem gem2 = Gem.diamond(3500);
        Gem gem3 = Gem.diamond(3500);
        Gem gem4 = Gem.diamond(3500);
        
        insertAndUpdate(gem1, 13, 3);
        insertAndUpdate(gem2, 13, 4);
        insertAndUpdate(gem3, 12, 3);
        insertAndUpdate(gem4, 12, 4);

        gem1.draw(engine);
        gem2.draw(engine);
        gem3.draw(engine);
        gem4.draw(engine);
        
        assertEquals("grouped Gems must be not drawn", 0, engine.getNumberOfQuadsDrawn());
    }
    
    private void insertAndUpdate(Gem gem, int x, int y)
    {
        grid.insertGem(x, y, gem); 
        grid.update(timer, gem); 
    }
}
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:14   #6
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    public void draw(EngineInterface engine)
    {
        if (!isInAGroup())
        {
            sprite.draw(engine);
        }
        
    }
è la draw di gem

ps.si sarebbe potuto inserire il controllo in grid.draw(), anziche in gem.draw(); dove è piu sensato metterlo?(per passare questo test è pero obbligatorio metterlo in gem)
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:15   #7
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da Ufo13
Test List:

- Le Gem appartenenti ad un GemGroup non vengono disegnate.

- Dato un GemGroup testiamo che la texture caricata per disegnare il GemGroup sia la texture corretta.

- Dato un GemGroup testiamo che vengano rilevate le tile di tipo "angolo_alto_sx, angolo_alto_dx etc...", i bordi (alto, sx, dx, basso) e i riempimenti. Il tutto nelle corrette posizioni.

- Dato un gruppo 3x3 testiamo che ai corrispondenti angoli, bordi e riempimenti vengano disegnate le "tile" corrette.
Ottimo. Aggiungete i test man mano che ne vengono fuori altri.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:16   #8
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da thebol
Codice:
    public void draw(EngineInterface engine)
    {
        if (!isInAGroup())
        {
            sprite.draw(engine);
        }
        
    }
è la draw di gem

ps.si sarebbe potuto inserire il controllo in grid.draw(), anziche in gem.draw(); dove è piu sensato metterlo?(per passare questo test è pero obbligatorio metterlo in gem)
E' piu' sensato metterlo dove fa passare tutti i test, quindi dove l'hai messo tu
fek è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:24   #9
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Che bello...ho la ppossibilità di guardarmi un task in pair in diretta!!!
Meglio di SKY...mi prendo 2 pop-corn e me lo godo tutto !!!
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:25   #10
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Quote:
Originariamente inviato da fek
E' piu' sensato metterlo dove fa passare tutti i test, quindi dove l'hai messo tu
ashg
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:26   #11
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    
public void testGetTexture(){
        Config config = Config.createForTesting();
        GemGroups gemGroups = new GemGroups(config.getInteger("rows"), config.getInteger("columns"));
        gemGroups.addGem(gem1);
        assertNotNull("Not texture loaded in gemGroups",gemGroups.getTexture());

    }

Ultima modifica di thebol : 20-01-2006 alle 13:31.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 13:48   #12
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Hmmm il test da NullPointerException...

La Gem va prima inserita nella griglia

Il test cambia così:

Codice:
   public void testGetTexture()
    {
        Config config = Config.createForTesting();
        GemGroups gemGroups = new GemGroups(config.getInteger("rows"), config.getInteger("columns"));
        insertAndUpdate(gem1, 11, 4);
        gemGroups.addGem(gem1);
        assertNotNull("No texture loaded in gemGroups", gemGroups.getTexture());
    }

Questo è il codice (Quick Fix) che fa passare il test

Codice:
    public Texture getTexture()
    {
        return new Texture("diamond");
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:00   #13
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
preparo il nuovo test....

Devo testare che il GemGroup restituisca la Texture giusta in base al "GemType del gruppo"... Il GemType del GemGroup non è definito... Tralasciamo questo test un secondo

Propongo questo test
Codice:
    public void testGemType()
    {
        insertAndUpdate(gem3, 13, 3);
        insertAndUpdate(gem4, 13, 4);
        insertAndUpdate(gem5, 12, 3);
        insertAndUpdate(gem6, 12, 4);
        
        assertEquals("Wrong GemType of this GemGroup", GemType.EMERALD, gem3.getGroup().getType());
    }
Corretto il test... 12 invece di 14

Ultima modifica di Ufo13 : 20-01-2006 alle 14:09.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:25   #14
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Non capisco perchè da build rotta sulla build machine... I test sono in ignore!
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14:30   #15
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    public GemType getType()
    {
        return gemType;
    }
il type viene definito nel costruttore

Codice:
    public GemGroups(int rows, int columns, GemType gemType)
    {
        defaultRows = rows;
        defaultColumns = columns;
        this.gemType = gemType;
    }
questo per evitare che un gruppo non abbia gemType.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15:26   #16
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
thebol ha committato un nuovo test ma è dovuto scappare così non ha potuto postare

Codice:
    public void testDifferenteTextureLoaded(){
        insertAndUpdate(gem3, 13, 1);
        insertAndUpdate(gem4, 13, 2);
        insertAndUpdate(gem5, 12, 1);
        insertAndUpdate(gem6, 12, 2);
        
        insertAndUpdate(gem9, 13, 3);
        insertAndUpdate(gem10, 13, 4);
        insertAndUpdate(gem11, 12, 3);
        insertAndUpdate(gem12, 12, 4);
        
        assertEquals("gemGroup Texture is not correct", "gfx/gems/tiles/emerald", gem3.getGroup().getTexture().getName());
        assertEquals("gemGroup Texture is not correct", "gfx/gems/tiles/diamond", gem9.getGroup().getTexture().getName());
    }
L'ho modificato un pelo per testare che la texture sia proprio del tipo corretto

Ultima modifica di Ufo13 : 20-01-2006 alle 15:36.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15:40   #17
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Aggiunti i seguenti field in GemGroup (ho pure cambiato il nome da GemGroups a GemGroup per coerenza con Gem)

Codice:
private static final String GEMGROUP_PATH = "gfx/gems/tiles/";

private Texture texture;


Nel costruttore viene inizializzato l'oggetto Texture

Codice:
this.texture = new Texture(GEMGROUP_PATH.concat(gemType.name()));


Di conseguenza

Codice:
public Texture getTexture()
    {
        return texture;
    }
Build verde

Preparo il nuovo test
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 16:55   #18
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Il nuovo test è:

Codice:
    public void testCorrectGemsPositions()
    {
        Gem gem9 = Gem.create(gem3.getType(), 3500);
        Gem gem10 = Gem.create(gem3.getType(), 3500);
        Gem gem11 = Gem.create(gem3.getType(), 3500);
        
        insertAndUpdate(gem3, 13, 1);
        insertAndUpdate(gem4, 13, 2);
        insertAndUpdate(gem5, 13, 3);
        insertAndUpdate(gem6, 12, 1);
        insertAndUpdate(gem7, 12, 2);
        insertAndUpdate(gem8, 12, 3);
        insertAndUpdate(gem9, 11, 1);
        insertAndUpdate(gem10, 11, 2);
        insertAndUpdate(gem11, 11, 3);
        
        GemGroup gemGroup = gem3.getGroup();
        
        assertEquals("gem3's groupPosition is not correct", GemGroup.PositionType.BottomLeftCorner, gemGroup.getPositionType(gem3));
        assertEquals("gem4's groupPosition is not correct", GemGroup.PositionType.BottomEdge, gemGroup.getPositionType(gem4));
        assertEquals("gem5's groupPosition is not correct", GemGroup.PositionType.BottomRightCorner, gemGroup.getPositionType(gem5));
        assertEquals("gem6's groupPosition is not correct", GemGroup.PositionType.LeftEdge, gemGroup.getPositionType(gem6));
        assertEquals("gem7's groupPosition is not correct", GemGroup.PositionType.Inner, gemGroup.getPositionType(gem7));
        assertEquals("gem8's groupPosition is not correct", GemGroup.PositionType.RightEdge, gemGroup.getPositionType(gem8));
        assertEquals("gem9's groupPosition is not correct", GemGroup.PositionType.TopLeftCorner, gemGroup.getPositionType(gem9));
        assertEquals("gem10's groupPosition is not correct", GemGroup.PositionType.TopEdge, gemGroup.getPositionType(gem10));
        assertEquals("gem11's groupPosition is not correct", GemGroup.PositionType.TopRightCorner, gemGroup.getPositionType(gem11));
    }
A te thebol
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 19:25   #19
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Codice:
    private void updateGroup()
    {
        
        if (checkRectFullOfGems())
        {
            setGemPositionType();
            lightUpGems();
        }
    }
Codice:
    private void setGemPositionType()
    {
        candidateGems.put(lefTopCorner, PositionType.TopLeftCorner);
        candidateGems.put(leftBottomCorner, PositionType.BottomLeftCorner);
        candidateGems.put(rightTopCorner, PositionType.TopRightCorner);
        candidateGems.put(rightBottomcorner, PositionType.BottomRightCorner);
        
        for(Gem currentGem : candidateGems.keySet())
        {
            if (isSettablePositionType(currentGem))
            {
                if (isInnerGem(currentGem))
                {
                    candidateGems.put(currentGem, PositionType.Inner);
                
                }
                else if (currentGem.getCellRow() == topRow)
                {
                    candidateGems.put(currentGem, PositionType.TopEdge);
                }
                else if (currentGem.getCellRow() == bottomRow)
                {
                    candidateGems.put(currentGem, PositionType.BottomEdge);
                }
                else if (currentGem.getCellColumn() == leftColumn)
                {
                    candidateGems.put(currentGem, PositionType.LeftEdge);
                }
                else if (currentGem.getCellColumn() == rightColumn)
                {
                    candidateGems.put(currentGem, PositionType.RightEdge);
                }
                
            }           
        }
        
    }
4 posizione le ho gratis.
poi per le restanti settabili guardo che spigoli sono.

qua gli altri metodi che facevano arrivare la complessita a 12

Codice:
    private boolean isSettablePositionType(Gem currentGem)
    {
        return gemIsInRect(currentGem) && !gemIsACorner(currentGem);
    }

    private boolean isInnerGem(Gem currentGem)
    {
        return currentGem.getCellRow() > topRow 
            && currentGem.getCellColumn() > leftColumn 
            && currentGem.getCellRow() < bottomRow 
            && currentGem.getCellColumn() < rightColumn;
    }
currentGem è diventata una hashMap<Gem. typePosition>, ho modificato un paio di metodi che ciclavano sull'arrayList.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 20:09   #20
Ufo13
Senior Member
 
L'Avatar di Ufo13
 
Iscritto dal: Nov 2005
Messaggi: 1545
Posto io il test che ha fatto thebol

L'ho completato ed ora è così

Codice:
    public void testCorrectTileDraw()
    {
        MockEngine engine = MockEngine.createForTesting(800, 600);
        
        Gem gem9 = Gem.create(gem3.getType(), 3500);
        Gem gem10 = Gem.create(gem3.getType(), 3500);
        Gem gem11 = Gem.create(gem3.getType(), 3500);
        
        insertAndUpdate(gem3, 13, 1);
        insertAndUpdate(gem4, 13, 2);
        insertAndUpdate(gem5, 13, 3);
        insertAndUpdate(gem6, 12, 1);
        insertAndUpdate(gem7, 12, 2);
        insertAndUpdate(gem8, 12, 3);
        insertAndUpdate(gem9, 11, 1);
        insertAndUpdate(gem10, 11, 2);
        insertAndUpdate(gem11, 11, 3);
        
        GemGroup gemGroup = gem3.getGroup();
        
        gemGroup.draw(PositionType.BottomLeftCorner, engine);
        assertEquals("bad texture drawn", 0, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.BottomEdge, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.BottomRightCorner, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.LeftEdge, engine);
        assertEquals("bad texture drawn", 0, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.Inner, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.RightEdge, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().left());
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.TopLeftCorner, engine);
        assertEquals("bad texture drawn", 0, engine.getTextureRect().left());
        assertEquals("bad texture drawn", 0, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.TopEdge, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE, engine.getTextureRect().left());
        assertEquals("bad texture drawn", 0, engine.getTextureRect().top());
        
        gemGroup.draw(PositionType.TopRightCorner, engine);
        assertEquals("bad texture drawn", Gem.GEM_SIZE * 2, engine.getTextureRect().left());
        assertEquals("bad texture drawn", 0, engine.getTextureRect().top());
    }
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
AMD: l'alternativa al DLSS 5 sarebbe in ...
Canon EOS R8 Mark II: sensore da 24,2 MP...
Alla Napoli Shipping Week 2026 arriva il...
Addio bollo: il Governo cancella la tass...
Speciale Logitech G: mouse PRO X SUPERLI...
Cosa pensano Altman, Amodei, Benioff e H...
Microsoft: evento il 7 ottobre dedicato ...
Scoperti 84 corpi cosmici anomali: cosa ...
Dimensity 9600 Pro contro A20 Pro, il nu...
HillMiles MileCity1 torna a 648,99€: e-b...
Enel Mobile, il debutto è sempre ...
Nuova rimodulazione per il fisso di TIM ...
iPhone 18 Pro e Pro Max, preordini sotto...
Ha craccato 26 giochi: ora Denuvo vuole ...
Xiaomi 18 Pro, il lancio è uffici...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:31.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v