¿ªÔÆÌåÓý

ctrl + shift + ? for shortcuts
© 2025 Groups.io
Date

Re: [TDD] Arabic to Roman Numeral kata with commentary

 

Hi Corey,

Your katacast is fantastic, it shows the power of TDD(combined with TPP) really well.

I'm really?grateful?for your contribution towards the IT craftsmanship!
Keep up the good work!

Br,
Alpar Gabos


________________________________
From: Corey Haines <coreyhaines@...>
To: testdrivendevelopment <testdrivendevelopment@...>
Sent: Tuesday, December 18, 2012 2:21 PM
Subject: [TDD] Arabic to Roman Numeral kata with commentary


?
Hi, All,

I recently posted a katacast of the arabic to roman numeral conversion kata
with an audio commentary track over it. It is heavy TDD, plus uses bits of
the transformation priority premise.



Would love to hear any feedback from the list.

Thanks!
-Corey Haines






[Non-text portions of this message have been removed]


Re: [TDD] Sharable Examples of Good Testing

 

I think Fitnesse is wrought in a TestDriven fashion:

On Tue, 18 Dec 2012 14:56:11 -0000, john_s_ryan wrote:
I'm looking for some examples of software programs that are good
examples of TDD in action. I want to be able to share them with
anyone, so they need to be publicly accessible.

Do you know of any open source projects that we can proudly hold up?


Re: [TDD] Sharable Examples of Good Testing

 

Hello!

If you want a repository with good practices, maybe you should read the
"Clean Code" (by Robert C. Martin) and other books like that.

I know a repository with the same kata resolved by loads of people. Some of
them has very bad code and some, very good solutions. There is no optimal
solution... only many good ones:

It has some pages written in Spanish, but the main part is written in
English and I think it can be understood.

I hope that helps!


2012/12/18 Angel Java Lopez <ajlopez2000@...>

Well, I don't know if there are the more appropriate examples, but I
usually made atomic commits per tests in my GitHub projects:



(except the PHP ones ;*) See the commit log

A simple example, Javascript/NodeJs using require('assert')
Turing Machine
Cellular Automata, then Game of Life
Finite Groups

in Java, using JUnit/Eclipse

A bit more elaborated, but with huge commit history
Python interpreter in C# (WIP)
Smalltalk VM in C#
same in Java
C#-like scripting language

Using QUnit


Angel "Java" Lopez
@ajlopez

On Tue, Dec 18, 2012 at 11:56 AM, john_s_ryan <jtigger@...
wrote:
**


I'm looking for some examples of software programs that are good examples
of TDD in action. I want to be able to share them with anyone, so they
need
to be publicly accessible.

Do you know of any open source projects that we can proudly hold up?



[Non-text portions of this message have been removed]



------------------------------------

Yahoo! Groups Links




--
Miguel ?ngel Garc¨ªa Mart¨ªnez

Mail <miguelangel.garcia@...> | Twitter <>
| LinkedIn <> |
about.me <>


Re: [TDD] Sharable Examples of Good Testing

 

Well, I don't know if there are the more appropriate examples, but I
usually made atomic commits per tests in my GitHub projects:



(except the PHP ones ;*) See the commit log

A simple example, Javascript/NodeJs using require('assert')
Turing Machine
Cellular Automata, then Game of Life
Finite Groups

in Java, using JUnit/Eclipse

A bit more elaborated, but with huge commit history
Python interpreter in C# (WIP)
Smalltalk VM in C#
same in Java
C#-like scripting language

Using QUnit


Angel "Java" Lopez
@ajlopez

On Tue, Dec 18, 2012 at 11:56 AM, john_s_ryan <jtigger@...>wrote:

**


I'm looking for some examples of software programs that are good examples
of TDD in action. I want to be able to share them with anyone, so they need
to be publicly accessible.

Do you know of any open source projects that we can proudly hold up?



[Non-text portions of this message have been removed]


Re: [TDD] Re: Arabic to Roman Numeral kata with commentary

 

Thanks so much for the kind words, John,


On Tue, Dec 18, 2012 at 9:53 AM, john_s_ryan <jtigger@...>wrote:

**


I really appreciate your delivery style. There's zero ego-speak to
overcome, you're just sharing peer-to-peer with your fellow craftsmen. This
is very pragmatic: when trying to learn something, pompous tone or outright
arrogance is noise. Yours is a bright clear signal. Thank you for that.
Thanks. In these, I try to take a "let me show you how I do it" rather than
a "you should do it this way." I don't think there is a lot of value in
trying to convince others, but rather just to show that this is a path they
can choose that is effective for a lot of people. Perhaps it gives people a
taste that motivates them to look more at it.


Just as important as your use of Uncle Bob's Transformations in priority,
is your repertoire of chops. I wonder if that's worth giving a little
attention to? What we talk about is implicitly more important, what we
don't talk about is implicitly relatively less important.
Thanks. I assume you mean around using VIM? I have spent the past few years
honing them. There is still a lot to learn, but I've got the
minute-to-minute editing down fairly nicely. Actually, the non-commentary
version of the kata is more than a minute longer than it takes me when I'm
going full speed. It usually takes me between 6:30 and 6:45 to do it.



~15 mins is a perfect-sized morsel. There's enough to chew on here, for
most, that it's a great time to take a break.
Yeah. I was happy to see it come in around that amount of time. I wouldn't
want it to get much longer, as it suddenly becomes something to schedule.
15 minutes tends to be a good amount where you can sit down and watch
during a break.



Good stuff!
Thanks again. I'm looking forward to potentially doing these periodically,
especially alongside my coming video series that will be like this except
for a whole web app.

Cheers!
-Corey




--- In testdrivendevelopment@..., Corey Haines wrote:

Hi, All,

I recently posted a katacast of the arabic to roman numeral conversion kata
with an audio commentary track over it. It is heavy TDD, plus uses bits of
the transformation priority premise.




Would love to hear any feedback from the list.

Thanks!
-Corey Haines


[Non-text portions of this message have been removed]



[Non-text portions of this message have been removed]


Re: Arabic to Roman Numeral kata with commentary

john_s_ryan
 

First off, thank you for putting that katacast together.

I really appreciate your delivery style. There's zero ego-speak to overcome, you're just sharing peer-to-peer with your fellow craftsmen. This is very pragmatic: when trying to learn something, pompous tone or outright arrogance is noise. Yours is a bright clear signal. Thank you for that.

Your solution has a certain elegance. As Matthew May points out, elegance is that simplicity that is earned by doing the hard work of intentionally wading through the complexity.

Just as important as your use of Uncle Bob's Transformations in priority, is your repertoire of chops. I wonder if that's worth giving a little attention to? What we talk about is implicitly more important, what we don't talk about is implicitly relatively less important.

~15 mins is a perfect-sized morsel. There's enough to chew on here, for most, that it's a great time to take a break.

Finally, your taking the time to do at least two passes really increases the value density as well. There's something to be said when the listener isn't wanting to complete your sentences because you're multitasking and a bit slow on clearly articulating what you're doing while you're doing it.

Good stuff!

--- In testdrivendevelopment@..., Corey Haines wrote:

Hi, All,

I recently posted a katacast of the arabic to roman numeral conversion kata
with an audio commentary track over it. It is heavy TDD, plus uses bits of
the transformation priority premise.



Would love to hear any feedback from the list.

Thanks!
-Corey Haines


[Non-text portions of this message have been removed]


Sharable Examples of Good Testing

john_s_ryan
 

I'm looking for some examples of software programs that are good examples of TDD in action. I want to be able to share them with anyone, so they need to be publicly accessible.

Do you know of any open source projects that we can proudly hold up?


Arabic to Roman Numeral kata with commentary

 

Hi, All,

I recently posted a katacast of the arabic to roman numeral conversion kata
with an audio commentary track over it. It is heavy TDD, plus uses bits of
the transformation priority premise.



Would love to hear any feedback from the list.

Thanks!
-Corey Haines


Are developers from Mars and testers from Venus?

 

Please help Swinburne university researchers find out -?


[Non-text portions of this message have been removed]


Video: Behavior Driven Testing for Multichannel Enterprise Applications

 

Video from the Agile Testing & BDD eXchange 2012, what do you guys think?


[TDD] Re: driving

 

Oddly enough, I think it answered his question.
Really; I had no idea. I used google.

--- Dave Rooney <daverooneyca@...> wrote:

LOL!!
On 12-11-12 4:20 PM, JeffGrigg wrote:

;->
--- "jack hirst" <hudsocat@> wrote:
what is a cpc certificate and what are the rules anyone know


TDD rowFixture test returns an IllegalArgumentException on a reflection mismatch

 

I have the following setup:
rhel55, jdk 170, eclipse juno, fitnesse.
I am new to Fitnesse and I am aware I need training and I am busy
ramping myself up reading through 70% of Fit for Development Software. I
was hoping someone in this forum would give me some advice as well on
how to resolve the coding issue I have resulting in the stacktrace in
the Fitnesse result :
net.qaautomation.fitnesse.fixtures.DcrSrcListarea relative path
java.lang.IllegalArgumentException: Can not set
com.interwoven.cssdk.filesys.CSAreaRelativePath field
com.interwoven.proserv.dcr.DcrList.areaRelativePath to
com.interwoven.cssdk.filesys.CSAreaRelativePath at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns&#92;
afeFieldAccessorImpl.java:164) at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns&#92;
afeFieldAccessorImpl.java:168) at
sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.ja&#92;
va:55) at
sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorI&#92;
mpl.java:36) at java.lang.reflect.Field.get(Field.java:372) at
fit.TypeAdapter.get(TypeAdapter.java:94) at
fit.RowFixture.buildCells(RowFixture.java:212) at
fit.RowFixture.buildRows(RowFixture.java:191) at
fit.RowFixture.doRows(RowFixture.java:32) at
fit.Fixture.doTable(Fixture.java:153) at
fit.Fixture.interpretTables(Fixture.java:99) at
fit.Fixture.doTables(Fixture.java:79) at
fit.FitServer.process(FitServer.java:81) at
fit.FitServer.run(FitServer.java:56) at
fit.FitServer.main(FitServer.java:41)surplus
java.lang.IllegalArgumentException: Can not set
com.interwoven.cssdk.filesys.CSAreaRelativePath field
com.interwoven.proserv.dcr.DcrList.areaRelativePath to
com.interwoven.cssdk.filesys.CSAreaRelativePath at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns&#92;
afeFieldAccessorImpl.java:164) at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns&#92;
afeFieldAccessorImpl.java:168) at
sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.ja&#92;
va:55) at
sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorI&#92;
mpl.java:36) at java.lang.reflect.Field.get(Field.java:372) at
fit.TypeAdapter.get(TypeAdapter.java:94) at
fit.RowFixture.buildCells(RowFixture.java:212) at
fit.RowFixture.buildRows(RowFixture.java:191) at
fit.RowFixture.doRows(RowFixture.java:32) at
fit.Fixture.doTable(Fixture.java:153) at
fit.Fixture.interpretTables(Fixture.java:99) at
fit.Fixture.doTables(Fixture.java:79) at
fit.FitServer.process(FitServer.java:81) at
fit.FitServer.run(FitServer.java:56) at
fit.FitServer.main(FitServer.java:41)surplus
java.lang.IllegalArgumentException: Can not set
com.interwoven.cssdk.filesys.CSAreaRelativePath field
com.interwoven.proserv.dcr.DcrList.areaRelativePath to
com.interwoven.cssdk.filesys.CSAreaRelativePath at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns&#92;
afeFieldAccessorImpl.java:164) at
sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(Uns&#92;
afeFieldAccessorImpl.java:168) at
sun.reflect.UnsafeFieldAccessorImpl.ensureObj(UnsafeFieldAccessorImpl.ja&#92;
va:55) at
sun.reflect.UnsafeObjectFieldAccessorImpl.get(UnsafeObjectFieldAccessorI&#92;
mpl.java:36) at java.lang.reflect.Field.get(Field.java:372) at
fit.TypeAdapter.get(TypeAdapter.java:94) at
fit.RowFixture.buildCells(RowFixture.java:212) at
fit.RowFixture.buildRows(RowFixture.java:191) at
fit.RowFixture.doRows(RowFixture.java:32) at
fit.Fixture.doTable(Fixture.java:153) at
fit.Fixture.interpretTables(Fixture.java:99) at
fit.Fixture.doTables(Fixture.java:79) at
fit.FitServer.process(FitServer.java:81) at
fit.FitServer.run(FitServer.java:56) at
fit.FitServer.main(FitServer.java:41)surplus
I have setup a rowFixture against a HP Autonomy TeamSite application and
CSAreaRelativePath is an object that returns a path to an xml file in
the CMS repository. The objective of the test is to get a list of all
the assets in an area. If I set the field in DcrList areaRelativePath to
String and refactor the code to get String objects then Reflection still
does not really accept the objects from DcrList and DcrSrcList to be the
same. I have looked at this for a week now and i am reading the book Fit
for Developing Software - Framework for Integrated Tests from Rick
Mugridge and Ward Cunningham which is getting me very far, but I need
some further help to get me on the right track. If I make a static field
of CSAreaRelativePath in DcrList.java then the test says:
net.qaautomation.fitnesse.fixtures.DcrSrcListarea relative pathnull
surplusnull surplusnull surplusnull surplus
The Fitnesse test configuration and code look like this. Please let me
know if you need logs, or anything else:
|!-net.qaautomation.fitnesse.fixtures.DcrSrcList-!||''area relative
path''|
The DcrSrcList java looks like this:
public class DcrSrcList extends fit.RowFixture { private static
Logger log = LogManager.getLogger(DcrSrcList.class);
@Override public Object[] query() throws Exception {
DcrList dcrlist = new DcrList(null); List<CSAreaRelativePath>
arearelativepathList = new ArrayList<CSAreaRelativePath>();
for (Iterator<?> it = dcrlist.getDcrList(); it.hasNext();){
CSAreaRelativePath areaRelativePath = (CSAreaRelativePath) it.next();
log.debug("DcrSrcList path: " + areaRelativePath.toString());
arearelativepathList.add(areaRelativePath); } for
(Iterator<CSAreaRelativePath> iterator =
arearelativepathList.iterator(); iterator .hasNext();) {
CSAreaRelativePath string = (CSAreaRelativePath) iterator.next();
log.debug("show list entry: " + string); } return
arearelativepathList.toArray(); } @Override public Class<?>
getTargetClass() { // TODO Auto-generated method stub return
DcrList.class; } }
The DcrList.java looks like this:
package com.interwoven.proserv.dcr;
import java.util.ArrayList;import java.util.Iterator;import
org.apache.log4j.LogManager;import org.apache.log4j.Logger;import
com.interwoven.proserv.common.IOHelper;import
com.interwoven.proserv.common.MasterFactory;import
com.interwoven.proserv.common.Constants;import
com.interwoven.cssdk.filesys.CSSortKey;import
com.interwoven.cssdk.common.CSClient;import
com.interwoven.cssdk.filesys.CSBranch;import
com.interwoven.cssdk.filesys.CSAreaRelativePath;import
com.interwoven.cssdk.filesys.CSDir;import
com.interwoven.cssdk.filesys.CSFile;import
com.interwoven.cssdk.filesys.CSFileKindMask;import
com.interwoven.cssdk.filesys.CSSimpleFile;import
com.interwoven.cssdk.filesys.CSVPath;import
com.interwoven.cssdk.filesys.CSWorkarea;import
com.interwoven.proserv.common.TSHelper;import
org.apache.commons.lang.StringUtils;
import org.apache.commons.collections.CollectionUtils;
/**
* @name AppendHTMLTagToBlockQuote
* @description Class which returns a list of TeamSite Data Content
Records
* @author arnout.cator
* @returns List<SimpleFile>
*/
public class DcrList {
private static Logger log = LogManager.getLogger(DcrList.class);
private CSSimpleFile dcr; private ArrayList<CSAreaRelativePath>
dcrList; private CSClient master; private CSVPath path; private
static String excludeRegex = IOHelper.getString("excludeRegex"); //gets
the string from master.properties private
ArrayList<CSAreaRelativePath> allFiles ; private CSAreaRelativePath[]
areaRelativePathArray; public CSAreaRelativePath areaRelativePath;
private String fileKind;
/** * Constructor with path field * @param areaRelativePath */
public DcrList(CSAreaRelativePath areaRelativePath) {
this.areaRelativePath = areaRelativePath;
}
public Iterator getDcrList() throws Exception {
//get the work area
//get all DCRs and stick them in the List
log.debug(": getDcrList() method start");
CSClient master = MasterFactory.getMasterClient();
String vpath = "/default/main/component-guide";
CSVPath csvpath = new CSVPath(vpath);
log.debug(": getDcrList() csvpath: " + csvpath.toString());
CSBranch branch = master.getBranch(csvpath, true);
log.debug(": getDcrList() branch: " + branch.getKind());
CSWorkarea[] workareas = branch.getWorkareas();
allFiles = new ArrayList<CSAreaRelativePath>();
for (int i = 0; i < workareas.length; i++) {
CSWorkarea csWorkarea = workareas[i];
CSSortKey[] sortArray = new CSSortKey[1];
sortArray[0] = new CSSortKey(CSSortKey.NAME, true);
Iterator<?> iterator =
csWorkarea.getRootDir().getFiles(CSFileKindMask.SIMPLEFILE |
CSFileKindMask.DIR, sortArray,
CSFileKindMask.SIMPLEFILE | CSFileKindMask.DIR, null, 0, -1, true);
log.debug("DcrList: About to display the workarea");

while (iterator.hasNext()) {
CSFile file = (CSFile) iterator.next();

log.debug("DcrList Substring: " +
file.getVPath().toString().replaceAll("//RH55WS732/default/main/componen&#92;
t-guide/WORKAREA/shared/", ""));
CSAreaRelativePath path = new
CSAreaRelativePath(file.getVPath().toString().replaceAll("//RH55WS732/de&#92;
fault/main/component-guide/WORKAREA/shared/", ""));
allFiles.add(path);
areaRelativePathArray = new CSAreaRelativePath[allFiles.size()] ;
log.debug("DcrList adding path to areaRelativePath array size: " +
areaRelativePathArray.length);
}
log.debug("DcrList final ArrayList allFiles size: " + allFiles.size());
}
dcrList = allFiles;
log.debug("DcrList size: " + dcrList.size());
return dcrList.iterator();
}
public void setDcrList(ArrayList<CSAreaRelativePath> dcrList) {
this.dcrList = dcrList;
}
/**
* @return the areaRelativePath
*/
public CSAreaRelativePath getAreaRelativePath() {
return areaRelativePath;
}


/**
* @param areaRelativePath the areaRelativePath to set
*/
public void setAreaRelativePath(CSAreaRelativePath areaRelativePath) {
this.areaRelativePath = areaRelativePath;
}}


Re: [TDD] Re: driving

 

LOL!!

On 12-11-12 4:20 PM, JeffGrigg wrote:



;->
--- "jack hirst" <hudsocat@...> wrote:
what is a cpc certificate and what are the rules anyone know


Re: driving

 




;->
--- "jack hirst" <hudsocat@...> wrote:
what is a cpc certificate and what are the rules anyone know


driving

jack hirst
 

what is a cpc certificate and what are the rules anyone know


[ANN] Typemock releases a new version of Isolator, including a FREE version

typemock
 

* Posted with permission of the moderator *
Unit testing is a key element for any software developer, development
team, or business. With proper unit testing, companies can reduce the
cost of software defects while maintaining code quality and allowing for
faster time-to-market. Typemock is committed to making unit testing
easier and more accessible to developers and organizations and also
ensure that individual programmers can use professional tools at home
and in their own personal projects. Last month, Typemock released new
packaging and pricing suitable for home and individual developers as
well as those working in organizations and large enterprises. Typemock
Isolator Basic - The basic package is a FREE unit testing framework, for
developers without legacy code to test, which provides basic mocking
functionality along with the smartrunner and coverage indicator features
only. With Isolator Basic anyone with green field projects can unit test
and engage in Test Driven Development (TDD) and get great design.
Download it now:
<> Typemock Isolator
Essential - The essential package adds full mocking capabilities for
developers that are committed to Test Driven Development (TDD) and unit
testing. It ensures high code quality and coverage, even for legacy
code, in all of .NET, including SharePoint, ASP.NET and ASP.NET MVC, and
C#. Typemock Isolator Complete - The complete unit testing package
offers the most advanced functionality available for teams where quality
is critical for their business. This comprehensive mocking framework
includes the autocompletion tool as well as productivity metrics for
real ROI tracking and an advanced ASP.NET and ASP.NET MVC test
simulator. Get it now.
<> What do you think?
Do you currently unit test? What is your need in a unit testing
framework both for home/personal projects and in your workplace?


Re: [TDD] Test Coverage Tool

Amir Kolsky
 

Thanks for all the replies, folks.



From: testdrivendevelopment@... [mailto:testdrivendevelopment@...] On Behalf Of Esko Luontola
Sent: Friday, October 19, 2012 12:17 PM
To: testdrivendevelopment@...
Subject: Re: [TDD] Test Coverage Tool





Joseph Yao wrote on 19.10.2012 8:43:
I will recommend pitest for Java mutation test.
Me too. PIT is the only most user friendly and useful mutation testing
tool that I know of. Add the configuration to your Maven POM and it just
works.

Here's the URL:

As an example of what the reports look like in real use, checkout
from GitHub, run the command "mvn clean verify -P
coverage-report" and look at the reports in /*/target/pit-reports
directories.

--
Esko Luontola
www.orfjackal.net





[Non-text portions of this message have been removed]


Re: [TDD] Test Coverage Tool

 

Joseph Yao wrote on 19.10.2012 8:43:
I will recommend pitest for Java mutation test.
Me too. PIT is the only most user friendly and useful mutation testing tool that I know of. Add the configuration to your Maven POM and it just works.

Here's the URL:

As an example of what the reports look like in real use, checkout from GitHub, run the command "mvn clean verify -P coverage-report" and look at the reports in /*/target/pit-reports directories.

--
Esko Luontola
www.orfjackal.net


Re: Test Coverage Tool

 

Pitclipse (Pitest), is a very good tool when using Java and Eclipse.


Re: [TDD] Test Coverage Tool

 

On Fri, Oct 19, 2012 at 2:43 AM, Joseph Yao <joseph.yao.ruozhou@...>
wrote:

**


I will recommend pitest for Java mutation test.
+1

--
Abra?os,
´³´Ç²õ³Ü¨¦



On Fri, Oct 19, 2012 at 2:43 AM, Joseph Yao <joseph.yao.ruozhou@...>wrote:

**


I will recommend pitest for Java mutation test.

From: testdrivendevelopment@... [mailto:
testdrivendevelopment@...] On Behalf Of Sangcheol Hwang
Sent: Friday, October 19, 2012 9:30 AM

To: testdrivendevelopment@...
Subject: Re: [TDD] Test Coverage Tool

covertura is not bad

2012? 10? 19? ???? Adam Sroka?? ??:

Lots of good leads here (in several languages):


On Thu, Oct 18, 2012 at 3:18 PM, Tim Ottinger <tottinge@...<mailto:
tottinge%40gmail.com> <javascript:;>>

wrote:

**


Is that agitar?

On Oct 18, 2012 3:55 PM, "Amir Kolsky" <kolsky@... <mailto:
kolsky%40actcom.net.il> <javascript:;>>

wrote:

I remember there exists a tool that will modify existing code to
check
whether that code has coverage or not.

I can't remember its name. Can someone help my failing memory there?



Thanks, A.



[Non-text portions of this message have been removed]



------------------------------------

Yahoo! Groups Links



[Non-text portions of this message have been removed]



[Non-text portions of this message have been removed]



------------------------------------

Yahoo! Groups Links



--
Blog:
Twiter: @k16wire

[Non-text portions of this message have been removed]