Torna indietro   Hardware Upgrade Forum > Software > Programmazione

MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi
Abbiamo provato MSI PRO MAX EDGE AI+, un mini-PC professionale progettato per eseguire modelli di intelligenza artificiale in locale, senza dipendere dal cloud. Il sistema abbina il processore AMD Ryzen AI Max+ 395, 128 GB di memoria unificata e un telaio in alluminio da appena 4 litri, con l'obiettivo di offrire capacità di elaborazione elevate in un formato compatto.
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista
Il nuovo top di gamma vivo punta su un comparto fotografico particolarmente articolato, con un teleobiettivo da 200 megapixel e teleconvertitori esterni capaci di arrivare a 400 mm equivalenti. Lo abbiamo provato a Tenerife, mettendo alla prova fotocamere, prestazioni, autonomia e accessori. Ecco come si è comportato.
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà
Un mondo affollato e vivo, personaggi destinati a sparire a fine test e nessuno a inseguire l'oggetto giusto. Beta e stress test di World of Warcraft: Forever hanno fatto emergere un roleplay spontaneo, tra danze a Goldshire e code ordinate ai PNG
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-01-2008, 21:49   #1
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
[PAIR] Fran vs Anonimo - The Beginning

Il task consiste nel restituire un oggetto NullAudio, che implementa l'interfaccia AudioInterface, e che fa nulla, quando la creazione di un oggetto Audio fallisce.

Questo e' il test che alla fine del task deve passare:

Codice:
    public void testAudioCreationFailure()
    {
        AudioFactory audioFactory = new FailingAudioFactory();

        AudioInterface audio = environment.createAudio(audioFactory);
        assertTrue(audio.isNull());
    }
Il test e' nel repository commentato. Non puo' passare perche' mancano tante cose all'appello:

- il metodo isNull() in AudioInterface
- la classe audioFactory()
- una versione del metodo createAudio() di environment che accetti un oggetto AudioFactory

Manca inoltre una classe NullAudio.

Partiamo con il metodo isNull(), questo e' il test in TestAudio.java:

Codice:
    public void setUp()
    {
        audio = MockAudio.create();
    }

    public void testIsNullNotTrueForMockAudio()
    {
        assertFalse(audio.isNull());
    }
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 22:19   #2
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Eccomi.

Per permettere la compilazione del test è stato aggiunto un metodo all'interfaccia AudioInterface :

Codice:
   boolean isNull();
Successivamente sono stati aggiunti i seguenti metodi in OpenALAudio :

Codice:
    public boolean isNull()
    {
            return false;
    }
e in MockAudio :

Codice:
    public boolean isNull() 
    {
        return true;
    }
A questo punto il test compilava, ma falliva.

Per farlo passare è stato cambiato in MockAudio in questo modo :

Codice:
    public boolean isNull()
    {
            return false;
    }

Test passato e avanti il prossimo
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 22:21   #3
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Il prossimo test richiede una classe NullAudio che sia nulla:

Codice:
    public void testNullAudioIsNull()
    {
        audio = new NullAudio();
        assertTrue(audio.isNull());
    }
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 22:30   #4
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Ok, creata una classe NullAudio che implementa AudioInterface.

Eclipse ha creato automaticamente questa classe :

Codice:
package it.diamonds.engine.audio;

public class NullAudio implements AudioInterface
{

    public Sound createSound(String name)
    {
        // TODO Auto-generated method stub
        return null;
    }


    public boolean isCreated()
    {
        // TODO Auto-generated method stub
        return false;
    }


    public boolean isInitialised()
    {
        // TODO Auto-generated method stub
        return false;
    }


    public boolean isMusicPlaying()
    {
        // TODO Auto-generated method stub
        return false;
    }


    public boolean isNull()
    {
        // TODO Auto-generated method stub
        return false;
    }


    public void playMusic()
    {
        // TODO Auto-generated method stub

    }


    public void shutDown()
    {
        // TODO Auto-generated method stub

    }


    public void stopMusic()
    {
        // TODO Auto-generated method stub

    }

}
cambiando l'implementazione di "isNull()" in :

Codice:
    public boolean isNull()
    {
        return true;
    }
Il test passa.
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 22:39   #5
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Ora ci serve l'AudioFactory, questo e' il test:

Codice:
package it.diamonds.tests.engine;


import junit.framework.TestCase;

public class TestAudioFactory extends TestCase
{
    public void testAudioFactoryCreate()
    {
        AudioFactory factory = new AudioFactory();
        assertNotNull(factory.create());
    }
}
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 22:50   #6
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Ok

Creazione di una classe it.diamonds.engine.AudioFactory :

Codice:
package it.diamonds.engine;

public class AudioFactory
{
    public Object create() 
    {
        return null;
    }
}
Il test fallisce.

Cambiando in :

Codice:
    public Object create() 
    {
        return 0;
    }
Il test riesce
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 22:52   #7
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
C'e' un bug in NullAudio, faccio prima a metterti il test che a spiegartelo:

Codice:
package it.diamonds.tests.engine.audio;

import it.diamonds.engine.audio.AudioInterface;
import it.diamonds.engine.audio.NullAudio;
import junit.framework.TestCase;

public class TestNullAudio extends TestCase
{

    public void testNullAudioIsCreated()
    {
        AudioInterface audio = new NullAudio();
        assertTrue(audio.isCreated());
    }
}
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:01   #8
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Non avevo mai visto un bug così

Il bug è stato risolto cambiando in it.diamonds.engine.audio.NullAudio :

Codice:
    public boolean isCreated()
    {
        return false;
    }
in:

Codice:
    public boolean isCreated()
    {
        return true;
    }
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:09   #9
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Prossimo test:

Codice:
package it.diamonds.tests.engine;


import it.diamonds.engine.AudioFactory;
import junit.framework.TestCase;

public class TestAudioFactory extends TestCase
{
    public void testAudioFactoryCreate()
    {
        AudioFactory factory = new AudioFactory();
        assertNotNull(factory.create());
    }

    public void testAudioFactoryCreateMockAudio()
    {
        AudioFactory factory = new MockAudioFactory();
        assertNotNull((MockAudio) factory.create());
    }

}
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:21   #10
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Creata la classe it.diamonds.tests.mocks.MockAudioFactory :

Codice:
public class MockAudioFactory extends AudioFactory
{
}
Da un errore di compilazione perchè la AudioFactory.create() di fatto ritorna un Integer.

Aggiungendo un override della create nella classe :

Codice:
    public AudioInterface create() 
    {
        return MockAudio.create();
    }
Il test riesce.
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:24   #11
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Chiudiamo il conto con AudioFactory

Codice:
package it.diamonds.tests.engine;


import it.diamonds.engine.AudioFactory;
import it.diamonds.engine.audio.AudioInterface;
import it.diamonds.tests.mocks.MockAudio;
import it.diamonds.tests.mocks.MockAudioFactory;
import junit.framework.TestCase;

public class TestAudioFactory extends TestCase
{
    public void testAudioFactoryCreate()
    {
        AudioFactory factory = new AudioFactory();
        assertNotNull(factory.create());
    }

    public void testAudioFactoryCreateMockAudio()
    {
        AudioFactory factory = new MockAudioFactory();
        assertNotNull((MockAudio) factory.create());
    }

    public void testAudioFactoryCreateAudioInterface()
    {
        AudioFactory factory = new AudioFactory();
        assertNotNull((AudioInterface) factory.create());
    }

}
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:32   #12
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Cambiamo :

Codice:
     public Object create()
     {
           return 0;
     }
in:

Codice:
    public AudioInterface create() 
    {
        return new NullAudio();
    }
Test passato!
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:33   #13
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
In TestEnvironment.java, un test che chieda di passare un AudioFactory al metodo createAudio di Environment:

Codice:
    public void testAudioCreationWithFactory()
    {
        AudioFactory audioFactory = new AudioFactory();
        assertNotNull((AudioInterface) environment.createAudio(audioFactory));
    }
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:39   #14
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Aggiunto il metodo in it.diamonds.Envionment :

Codice:
    public AudioInterface createAudio(AudioFactory factory)
    {
        return factory.create();
    }
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:43   #15
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Ora creiamo una classe mock che ritorni un eccezione quando tenta di creare un Audio.
Questo e' il test:

Codice:
    public void testFailingAudioFactoryMockException()
    {
        try
        {
            AudioFactory audioFactory = new FailingAudioFactoryMock();
            audioFactory.create();
            fail();
        }
        catch (RuntimeException e)
        {
        }
    }
fek è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:50   #16
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Creata la classe it.diamonds.tests.mocks.FailingAudioFactoryMock :

Codice:
public class FailingAudioFactoryMock extends AudioFactory
{
    public AudioInterface create()
    {
        throw new RuntimeException();
    }
}
Il Deathmatch continua ....
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 24-01-2008, 23:54   #17
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Proviamo a dare un colpo all'ultimo test, vediamo se si riesce a far passare con un paio di righe di codice:

Codice:
   public void testAudioCreationFailure()
    {
        AudioFactory audioFactory = new FailingAudioFactoryMock();

        AudioInterface audio = environment.createAudio(audioFactory);
        assertTrue(audio.isNull());
    }
fek è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2008, 00:00   #18
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
In it.diamonds.Environment la funzione createAudio(AudioFactory) è stata cambiata così :

Codice:
    public AudioInterface createAudio(AudioFactory factory)
    {
      return new NullAudio();
    }
Adesso il test passa.
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2008, 00:04   #19
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Questo vuol dire che il primo test di verifica che ho scritto non dava abbastanza informazioni, ci serve un altro test:

Codice:
    public void testAudioNotNullCreationWithFactory()
    {
        AudioFactory audioFactory = new MockAudioFactory();
        AudioInterface audio = environment.createAudio(audioFactory);
        assertFalse(audio.isNull());
    }
fek è offline   Rispondi citando il messaggio o parte di esso
Old 25-01-2008, 00:36   #20
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Dopo grandi ed epiche lotte intestine tra Eclipse e il repository SVN ecco le modifiche al codice

Metodo Environment.createAudio(AudioFactory)

Codice:
    public AudioInterface createAudio(AudioFactory factory)
    {
        try
        {
            audio = factory.create();
        } catch (RuntimeException e)
        {
            audio = new NullAudio();
        }
        
        return audio;
    }
Uomo 1 Macchina 0
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB per far girare in locale anche i modelli più grandi MSI PRO MAX EDGE AI+, Ryzen AI Max+ 395 e 128 GB...
Recensione vivo X500 Pro Max: la fotografia mobile ha un nuovo protagonista Recensione vivo X500 Pro Max: la fotografia mobi...
WoW Forever: la beta è stato uno dei momenti più alti della storia dei videogiochi, e non si ripeterà WoW Forever: la beta è stato uno dei mome...
Oracle AI World 2026: in Europa prima la sovranità, poi la sicurezza e solo dopo l'IA Oracle AI World 2026: in Europa prima la sovrani...
DS N°7 E-Tense: il SUV premium made in Melfi che punta su autonomia e comfort DS N°7 E-Tense: il SUV premium made in Melfi...
Itch.io, filtro "No AI": i giochi visibi...
Microsoft conferma: il nuovo speed test ...
Il capo può far leggere a Claude le chat...
L'AI fa volare AMD, ma c'è un set...
Le scuole statunitensi che rifiutano Gem...
WhatsApp, addio al supporto su iPhone e ...
Cinque grandi classici si uniscono al GO...
Ferrari Luce, la produzione 2027 è...
Contatori del condominio, la data da seg...
Windows 11, 8 GB di RAM non sono pi&ugra...
Octopus Energy ritira la tariffa Flex Mu...
Disegnare la superconduttività co...
Il razzo spaziale NASA SLS per la missio...
Il drone NASA Dragonfly ha volato per la...
GTA 6, preload dal 10 novembre: servono ...
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: 09:02.


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