SlideShare a Scribd company logo
Unit & Functional Tests
Fabien Potencier
Standardization
PHPUnit 3.5
Best practices
AllTests.php
phpunit.xml(.dist)

<phpunit backupGlobals="false"
         backupStaticAttributes="false"
         colors="false"
         convertErrorsToExceptions="true"
         convertNoticesToExceptions="true"
         convertWarningsToExceptions="true"
         processIsolation="true"
         stopOnFailure="false"
         syntaxCheck="false"
         bootstrap="../src/autoload.php"
>
<testsuites>
  <testsuite name="Project Test Suite">
    <directory>
      ../src/Application/*/Tests
    </directory>
  </testsuite>
</testsuites>
<filter>
  <whitelist>
    <directory>../src/Application</directory>
    <exclude>
      <directory>
         ../src/Application/*/Resources
      </directory>
      <directory>
         ../src/Application/*/Tests
      </directory>
    </exclude>
  </whitelist>
</filter>
Application/
  HelloBundle/
    Model/
      Article.php
    Tests/
      Model/
        ArticleTest.php


    Application/Tests/Model/ArticleTest.php
$ phpunit –c hello/
$ cd hello/
$ phpunit
$ phpunit -c hello/ src/Application/HelloBundle/

$ phpunit -c hello/ src/Application/HelloBundle/
Tests/Controller/HelloControllerTest.php
$ cd hello/
$ phpunit --coverage-html=cov/
Standard artifacts


--coverage-clover=clover.xml

--log-junit=junit.xml
Functional Tests
Do not write Unit Tests for a Controller
namespace ApplicationHelloBundleTestsController;

use SymfonyFrameworkWebBundleTestWebTestCase;

class HelloControllerTest extends WebTestCase
{
  public function testIndex()
  {
    $client = $this->createClient();
    $crawler = $client->request(
      'GET', '/hello/Fabien');

        $this->assertTrue($crawler->filter(
          'html:contains("Hello Fabien")')->count());
    }
}
$client = $this->createClient();

$crawler = $client->request(
  'GET', '/hello/Fabien');

$this->assertTrue($crawler->filter(
  'html:contains("Hello Fabien")')->count());
Environment   Debug mode
$this->createClient('test', true);
# hello/config/config_test.yml
imports:
    - { resource: config_dev.yml }

web.config:
    toolbar: false

zend.logger:
    priority: debug

kernel.test: ~
The Client makes requests to the Symfony2 application



 The Crawler parses the Response to allow navigation



     The PHPUnit Assertions tests the Response
Assertions
$this->assertEquals(
  10,
  $crawler->filter('div.hentry')->count());

$this->assertTrue(
  $client->getResponse()->isSuccessful());
The Client / The Crawler
$crawler = $client->request(
   'GET', 'hello/Lucas'
);
$link = $crawler->selectLink("Greet Lucas");

$client->click($link);
$form = $crawler->selectButton('submit');

$client->submit($form, array(
    'name'         => 'Lucas',
    'country'      => 'France',
    'like_symfony' => true,
    'photo'        => '/path/to/lucas.jpg',
));
$harry = $this->createClient();
$sally = $this->createClient();

$harry->request('POST', '/say/sally/Hello');
$sally->request('GET', '/messages');

$this->assertEquals(201,
  $harry->getResponse()->getStatusCode());

$this->assertRegExp('/Hello/',
  $sally->getResponse()->getContent());
$harry = $this->createClient();
$sally = $this->createClient();

$harry->insulate();
$sally->insulate();

$harry->request('POST', '/say/sally/Hello');
$sally->request('GET', '/messages');

$this->assertEquals(201,
  $harry->getResponse()->getStatusCode());
$this->assertRegExp('/Hello/',
  $sally->getResponse()->getContent());
Main PHP Process

1                                            4
$harry = $this->createClient();                $this->assertEquals(201,
$sally = $this->createClient();                         $harry->getResponse()->getStatusCode());
                                               $this-­‐>assertRegExp('/Hello/',	
  
$harry->insulate();                            	
  	
  $sally-­‐>getResponse()-­‐>getContent());	
  
$sally->insulate();




                       2
                                               Forked PHP Process
                           $harry->request('POST', '/say/sally/Hello');


                       3
                                               Forked PHP Process
                           $sally-­‐>request('GET',	
  '/messages');
Main PHP Process

1                                        3
$harry = $this->createClient();              $sally->request('GET', '/messages');
$sally = $this->createClient();
                                             $this->assertEquals(201,
$harry->insulate();                                   $harry->getResponse()->getStatusCode());
                                             $this-­‐>assertRegExp('/Hello/',	
  
                                             	
  	
  $sally-­‐>getResponse()-­‐>getContent());	
  



                       2
                                         Forked PHP Process
                           $harry->request('POST', '/say/sally/Hello');
Simulate or use HTTP
$response = $client->getResponse();
$profiler = $this->getProfiler($response);

if ($profiler) {
  $this->assertEquals(2,
    $profiler['db']->getQueryCount());

    $this->assertEquals('blog_post',
      $profiler['app']->getRoute());

    $this->assertTrue(
      $profiler['timer']->getTime() < 0.5);
}
Questions?
Sensio S.A.
   92-98, boulevard Victor Hugo
       92 115 Clichy Cedex
             FRANCE
      Tél. : +33 1 40 99 80 80

              Contact
          Fabien Potencier
   fabien.potencier at sensio.com


  http://www.sensiolabs.com/
http://www.symfony-project.org/
 http://fabien.potencier.org/
Ad

Recommended

Dependency injection in PHP 5.3/5.4
Dependency injection in PHP 5.3/5.4
Fabien Potencier
 
Dependency injection - phpday 2010
Dependency injection - phpday 2010
Fabien Potencier
 
Dependency injection-zendcon-2010
Dependency injection-zendcon-2010
Fabien Potencier
 
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Decouple Your Code For Reusability (International PHP Conference / IPC 2008)
Fabien Potencier
 
Dependency Injection IPC 201
Dependency Injection IPC 201
Fabien Potencier
 
PhpBB meets Symfony2
PhpBB meets Symfony2
Fabien Potencier
 
Symfony2 - OSIDays 2010
Symfony2 - OSIDays 2010
Fabien Potencier
 
The state of Symfony2 - SymfonyDay 2010
The state of Symfony2 - SymfonyDay 2010
Fabien Potencier
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
Fabien Potencier
 
Dependency Injection with PHP 5.3
Dependency Injection with PHP 5.3
Fabien Potencier
 
Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3
Fabien Potencier
 
News of the Symfony2 World
News of the Symfony2 World
Fabien Potencier
 
The Zen of Lithium
The Zen of Lithium
Nate Abele
 
The Origin of Lithium
The Origin of Lithium
Nate Abele
 
Building Lithium Apps
Building Lithium Apps
Nate Abele
 
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Nate Abele
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate Frameworks
Nate Abele
 
The State of Lithium
The State of Lithium
Nate Abele
 
PHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php framework
G Woo
 
Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8
PrinceGuru MS
 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il cliente
Leonardo Proietti
 
Design Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et Pimple
Hugo Hamon
 
Doctrine fixtures
Doctrine fixtures
Bill Chang
 
PHP Data Objects
PHP Data Objects
Wez Furlong
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5
Leonardo Proietti
 
Silex meets SOAP & REST
Silex meets SOAP & REST
Hugo Hamon
 
Lithium Best
Lithium Best
Richard McIntyre
 
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
smueller_sandsmedia
 
Perl Web Client
Perl Web Client
Flavio Poletti
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
Kacper Gunia
 

More Related Content

What's hot (20)

Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
Fabien Potencier
 
Dependency Injection with PHP 5.3
Dependency Injection with PHP 5.3
Fabien Potencier
 
Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3
Fabien Potencier
 
News of the Symfony2 World
News of the Symfony2 World
Fabien Potencier
 
The Zen of Lithium
The Zen of Lithium
Nate Abele
 
The Origin of Lithium
The Origin of Lithium
Nate Abele
 
Building Lithium Apps
Building Lithium Apps
Nate Abele
 
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Nate Abele
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate Frameworks
Nate Abele
 
The State of Lithium
The State of Lithium
Nate Abele
 
PHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php framework
G Woo
 
Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8
PrinceGuru MS
 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il cliente
Leonardo Proietti
 
Design Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et Pimple
Hugo Hamon
 
Doctrine fixtures
Doctrine fixtures
Bill Chang
 
PHP Data Objects
PHP Data Objects
Wez Furlong
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5
Leonardo Proietti
 
Silex meets SOAP & REST
Silex meets SOAP & REST
Hugo Hamon
 
Lithium Best
Lithium Best
Richard McIntyre
 
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
smueller_sandsmedia
 
Dependency Injection with PHP 5.3
Dependency Injection with PHP 5.3
Fabien Potencier
 
Dependency Injection with PHP and PHP 5.3
Dependency Injection with PHP and PHP 5.3
Fabien Potencier
 
News of the Symfony2 World
News of the Symfony2 World
Fabien Potencier
 
The Zen of Lithium
The Zen of Lithium
Nate Abele
 
The Origin of Lithium
The Origin of Lithium
Nate Abele
 
Building Lithium Apps
Building Lithium Apps
Nate Abele
 
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Lithium: The Framework for People Who Hate Frameworks, Tokyo Edition
Nate Abele
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate Frameworks
Nate Abele
 
The State of Lithium
The State of Lithium
Nate Abele
 
PHP 5.3 and Lithium: the most rad php framework
PHP 5.3 and Lithium: the most rad php framework
G Woo
 
Corephpcomponentpresentation 1211425966721657-8
Corephpcomponentpresentation 1211425966721657-8
PrinceGuru MS
 
Symfony2, creare bundle e valore per il cliente
Symfony2, creare bundle e valore per il cliente
Leonardo Proietti
 
Design Patterns avec PHP 5.3, Symfony et Pimple
Design Patterns avec PHP 5.3, Symfony et Pimple
Hugo Hamon
 
Doctrine fixtures
Doctrine fixtures
Bill Chang
 
PHP Data Objects
PHP Data Objects
Wez Furlong
 
Rich domain model with symfony 2.5 and doctrine 2.5
Rich domain model with symfony 2.5 and doctrine 2.5
Leonardo Proietti
 
Silex meets SOAP & REST
Silex meets SOAP & REST
Hugo Hamon
 
international PHP2011_Bastian Feder_jQuery's Secrets
international PHP2011_Bastian Feder_jQuery's Secrets
smueller_sandsmedia
 

Similar to Unit and Functional Testing with Symfony2 (20)

Perl Web Client
Perl Web Client
Flavio Poletti
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
Kacper Gunia
 
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Kacper Gunia
 
PHP 5.4
PHP 5.4
Federico Damián Lozada Mosto
 
CakePHP workshop
CakePHP workshop
Walther Lalk
 
Oops in php
Oops in php
Gourishankar R Pujar
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
Michael Peacock
 
Symfony2 - WebExpo 2010
Symfony2 - WebExpo 2010
Fabien Potencier
 
Unit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBenelux
Michelangelo van Dam
 
PSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworks
Elton Minetto
 
Advanced php testing in action
Advanced php testing in action
Jace Ju
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11
Michelangelo van Dam
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
Rafael Dohms
 
The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)
Fabien Potencier
 
Aura Project for PHP
Aura Project for PHP
Hari K T
 
Intro to PHP
Intro to PHP
Sandy Smith
 
The promise of asynchronous php
The promise of asynchronous php
Wim Godden
 
[PL] Jak nie zostać "programistą" PHP?
[PL] Jak nie zostać "programistą" PHP?
Radek Benkel
 
Symfony internals [english]
Symfony internals [english]
Raul Fraile
 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12
Jakub Zalas
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
Kacper Gunia
 
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Kacper Gunia
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
Michael Peacock
 
Unit testing with zend framework PHPBenelux
Unit testing with zend framework PHPBenelux
Michelangelo van Dam
 
PSR-7, middlewares e o futuro dos frameworks
PSR-7, middlewares e o futuro dos frameworks
Elton Minetto
 
Advanced php testing in action
Advanced php testing in action
Jace Ju
 
Unit testing with zend framework tek11
Unit testing with zend framework tek11
Michelangelo van Dam
 
Your code sucks, let's fix it - DPC UnCon
Your code sucks, let's fix it - DPC UnCon
Rafael Dohms
 
The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)
Fabien Potencier
 
Aura Project for PHP
Aura Project for PHP
Hari K T
 
The promise of asynchronous php
The promise of asynchronous php
Wim Godden
 
[PL] Jak nie zostać "programistą" PHP?
[PL] Jak nie zostać "programistą" PHP?
Radek Benkel
 
Symfony internals [english]
Symfony internals [english]
Raul Fraile
 
Symfony components in the wild, PHPNW12
Symfony components in the wild, PHPNW12
Jakub Zalas
 
Ad

More from Fabien Potencier (17)

Varnish
Varnish
Fabien Potencier
 
Look beyond PHP
Look beyond PHP
Fabien Potencier
 
Caching on the Edge
Caching on the Edge
Fabien Potencier
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3
Fabien Potencier
 
Caching on the Edge with Symfony2
Caching on the Edge with Symfony2
Fabien Potencier
 
Dependency Injection - ConFoo 2010
Dependency Injection - ConFoo 2010
Fabien Potencier
 
Dependency Injection
Dependency Injection
Fabien Potencier
 
Symfony Components
Symfony Components
Fabien Potencier
 
PHP 5.3 in practice
PHP 5.3 in practice
Fabien Potencier
 
Symfony2 revealed
Symfony2 revealed
Fabien Potencier
 
Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3
Fabien Potencier
 
Playing With PHP 5.3
Playing With PHP 5.3
Fabien Potencier
 
Symfony 2.0 on PHP 5.3
Symfony 2.0 on PHP 5.3
Fabien Potencier
 
Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009
Fabien Potencier
 
Symfony And Zend Framework Together 2009
Symfony And Zend Framework Together 2009
Fabien Potencier
 
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
Fabien Potencier
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
Fabien Potencier
 
Design patterns revisited with PHP 5.3
Design patterns revisited with PHP 5.3
Fabien Potencier
 
Caching on the Edge with Symfony2
Caching on the Edge with Symfony2
Fabien Potencier
 
Dependency Injection - ConFoo 2010
Dependency Injection - ConFoo 2010
Fabien Potencier
 
Symfony Components 2.0 on PHP 5.3
Symfony Components 2.0 on PHP 5.3
Fabien Potencier
 
Symfony2 San Francisco Meetup 2009
Symfony2 San Francisco Meetup 2009
Fabien Potencier
 
Symfony And Zend Framework Together 2009
Symfony And Zend Framework Together 2009
Fabien Potencier
 
Twig, the flexible, fast, and secure template language for PHP
Twig, the flexible, fast, and secure template language for PHP
Fabien Potencier
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
Fabien Potencier
 
Ad

Recently uploaded (20)

PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
Mastering AI Workflows with FME by Mark Döring
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 
PyCon SG 25 - Firecracker Made Easy with Python.pdf
PyCon SG 25 - Firecracker Made Easy with Python.pdf
Muhammad Yuga Nugraha
 
cnc-processing-centers-centateq-p-110-en.pdf
cnc-processing-centers-centateq-p-110-en.pdf
AmirStern2
 
"Scaling in space and time with Temporal", Andriy Lupa.pdf
"Scaling in space and time with Temporal", Andriy Lupa.pdf
Fwdays
 
Cyber Defense Matrix Workshop - RSA Conference
Cyber Defense Matrix Workshop - RSA Conference
Priyanka Aash
 
You are not excused! How to avoid security blind spots on the way to production
You are not excused! How to avoid security blind spots on the way to production
Michele Leroux Bustamante
 
UserCon Belgium: Honey, VMware increased my bill
UserCon Belgium: Honey, VMware increased my bill
stijn40
 
Daily Lesson Log MATATAG ICT TEchnology 8
Daily Lesson Log MATATAG ICT TEchnology 8
LOIDAALMAZAN3
 
The Future of Technology: 2025-2125 by Saikat Basu.pdf
The Future of Technology: 2025-2125 by Saikat Basu.pdf
Saikat Basu
 
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik - Passionate Tech Enthusiast
Raman Bhaumik
 
Mastering AI Workflows with FME by Mark Döring
Mastering AI Workflows with FME by Mark Döring
Safe Software
 
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
Salesforce Summer '25 Release Frenchgathering.pptx.pdf
yosra Saidani
 
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
CapCut Pro Crack For PC Latest Version {Fully Unlocked} 2025
pcprocore
 
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
" How to survive with 1 billion vectors and not sell a kidney: our low-cost c...
Fwdays
 
9-1-1 Addressing: End-to-End Automation Using FME
9-1-1 Addressing: End-to-End Automation Using FME
Safe Software
 
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Smarter Aviation Data Management: Lessons from Swedavia Airports and Sweco
Safe Software
 
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Coordinated Disclosure for ML - What's Different and What's the Same.pdf
Priyanka Aash
 
Curietech AI in action - Accelerate MuleSoft development
Curietech AI in action - Accelerate MuleSoft development
shyamraj55
 
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Quantum AI Discoveries: Fractal Patterns Consciousness and Cyclical Universes
Saikat Basu
 
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
ReSTIR [DI]: Spatiotemporal reservoir resampling for real-time ray tracing ...
revolcs10
 
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC and Open Hackathons Monthly Highlights June 2025
OpenACC
 

Unit and Functional Testing with Symfony2