Torna indietro   Hardware Upgrade Forum > Software > Programmazione

OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
DJI Osmo Nano: la piccola fotocamera alla prova sul campo
La nuova fotocamera compatta DJI spicca per l'abbinamento ideale tra le dimensioni ridotte e la qualità d'immagine. Può essere installata in punti di ripresa difficilmente utilizzabili con le tipiche action camera, grazie ad una struttura modulare con modulo ripresa e base con schermo che possono essere scollegati tra di loro. Un prodotto ideale per chi fa riprese sportive, da avere sempre tra le mani
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-01-2006, 13: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, 13: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, 13: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, 13: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, 14: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, 14: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, 14: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, 14: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, 14: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, 14: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, 14: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 14:31.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 14: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, 15: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 15:09.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 15: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, 15: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, 16: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 16:36.
Ufo13 è offline   Rispondi citando il messaggio o parte di esso
Old 20-01-2006, 16: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, 17: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, 20: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, 21: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


OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Oracle AI World 2025: l'IA cambia tutto, a partire dai dati Oracle AI World 2025: l'IA cambia tutto, a parti...
Full HD e QLED, è in offerta un TV da 32...
Honda ha rilasciato un nuovo video sul p...
Resident Evil Requiem: arriva su Switch ...
Marshall Acton III in promo su Amazon in...
2 portatili che costano poco ma vanno be...
Smartphone potenti sotto i 300€: ecco i ...
28 Offerte Amazon da non perdere: smartp...
X torna a crescere in Europa: +7 milioni...
NVIDIA festeggia 25 anni in Corea: RTX 5...
Lucca Comics 2025: dal Giappone alla Fra...
Agli italiani non piace la fibra: costi ...
SK hynix: HBM, DRAM e NAND completamente...
Ring porta in Italia videocamere e video...
Windows 11 e 10: finalmente risolto il p...
TEE.fail è l'attacco che scardina...
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: 15:45.


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