added a JUnit testcase for ResponseHeader dates (using age()), adjusted age() to pass all testspull/1/head
parent
4111d42c81
commit
5d67e165d9
@ -0,0 +1,135 @@
|
||||
package net.yacy.cora.protocol;
|
||||
|
||||
import java.util.Date;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
public class ResponseHeaderTest {
|
||||
|
||||
/**
|
||||
* Test of age method, of class ResponseHeader.
|
||||
* testing many combination of header.date and header.last_modified
|
||||
* test goal: age is suppose to always >= 0
|
||||
*/
|
||||
@Test
|
||||
public void testAge() {
|
||||
// because ResponseHeader caches date values internally on 1st access,
|
||||
// we need to create a new instance for every testcase
|
||||
|
||||
ResponseHeader testhdr1 = new ResponseHeader(200);
|
||||
ResponseHeader testhdr2 = new ResponseHeader(200);
|
||||
ResponseHeader testhdr3 = new ResponseHeader(200);
|
||||
|
||||
// access-sequence 1 = age() without accessing any date before
|
||||
// access-sequence 2 = access date() then age()
|
||||
// access-sequence 3 = access lastModified() then age()
|
||||
|
||||
// test case with sorce: date=null lastmodified=null
|
||||
long age1 = testhdr1.age();
|
||||
|
||||
testhdr2.date();
|
||||
testhdr3.lastModified();
|
||||
|
||||
assertEquals("access-sequence 1 date=null lastmod=null AGE="+age1, 0, age1);
|
||||
|
||||
testhdr2.lastModified();
|
||||
|
||||
long age2 = testhdr2.age();
|
||||
assertEquals("access-sequence 2 date=null lastmod=null AGE="+age2, 0, age2);
|
||||
|
||||
testhdr3.date();
|
||||
|
||||
long age3 = testhdr3.age();
|
||||
assertEquals("access-sequence 3 date=null lastmod=null AGE="+age3, 0, age3);
|
||||
|
||||
Date past = new Date(System.currentTimeMillis() / 2);
|
||||
Date future = new Date(System.currentTimeMillis() * 2);
|
||||
|
||||
Date[] testdate = new Date[3];
|
||||
testdate[0] = past;
|
||||
testdate[1] = new Date();
|
||||
testdate[2] = future;
|
||||
String[] testdatename = new String[] {"past","now","future"}; // date names just for output
|
||||
|
||||
for (int id = 0; id < testdate.length; id++) {
|
||||
|
||||
// test case with sorce: date=testdate(x) lastmodified=null
|
||||
testhdr1 = new ResponseHeader(200);
|
||||
testhdr1.put(HeaderFramework.DATE, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr2 = new ResponseHeader(200);
|
||||
testhdr2.put(HeaderFramework.DATE, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr3 = new ResponseHeader(200);
|
||||
testhdr3.put(HeaderFramework.DATE, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
|
||||
age1 = testhdr1.age();
|
||||
testhdr2.date();
|
||||
testhdr3.lastModified();
|
||||
|
||||
assertTrue("access-sequence 1."+id+" date=" + testdatename[id] + " lastmod=null AGE= " + age1, age1 >= 0);
|
||||
|
||||
age2 = testhdr2.age();
|
||||
assertTrue("access-sequence 2."+id+" date=" + testdatename[id] + " lastmod=null AGE= " + age2, age2 >= 0);
|
||||
|
||||
age3 = testhdr3.age();
|
||||
assertTrue("access-sequence 3."+id+" date=" + testdatename[id] + " lastmod=null AGE= " + age3, age3 >= 0);
|
||||
|
||||
// test case with sorce: date=null lastmodified=testdat(x)
|
||||
testhdr1 = new ResponseHeader(200);
|
||||
testhdr1.put(HeaderFramework.LAST_MODIFIED, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr2 = new ResponseHeader(200);
|
||||
testhdr2.put(HeaderFramework.LAST_MODIFIED, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr3 = new ResponseHeader(200);
|
||||
testhdr3.put(HeaderFramework.LAST_MODIFIED, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
|
||||
age1 = testhdr1.age();
|
||||
testhdr2.date();
|
||||
testhdr3.lastModified();
|
||||
|
||||
assertTrue("access-sequence 1."+id+" date=null lastmod=" + testdatename[id] + " AGE= " + age1, age1 >= 0);
|
||||
|
||||
age2 = testhdr2.age();
|
||||
assertTrue("access-sequence 2."+id+" date=null lastmod=" + testdatename[id] + " AGE= " + age2, age2 >= 0);
|
||||
|
||||
age3 = testhdr3.age();
|
||||
assertTrue("access-sequence 3."+id+" date=null lastmod=" + testdatename[id] + " AGE= " + age3, age3 >= 0);
|
||||
|
||||
for (int imd = 0; imd < testdate.length; imd++) {
|
||||
// test case with sorce: date=testdate(x) lastmodified=testdate(y)
|
||||
testhdr1 = new ResponseHeader(200);
|
||||
testhdr1.put(HeaderFramework.DATE, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr1.put(HeaderFramework.LAST_MODIFIED, HeaderFramework.formatRFC1123(testdate[imd]));
|
||||
|
||||
testhdr2 = new ResponseHeader(200);
|
||||
testhdr2.put(HeaderFramework.DATE, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr2.put(HeaderFramework.LAST_MODIFIED, HeaderFramework.formatRFC1123(testdate[imd]));
|
||||
|
||||
testhdr3 = new ResponseHeader(200);
|
||||
testhdr3.put(HeaderFramework.DATE, HeaderFramework.formatRFC1123(testdate[id]));
|
||||
testhdr3.put(HeaderFramework.LAST_MODIFIED, HeaderFramework.formatRFC1123(testdate[imd]));
|
||||
|
||||
age1 = testhdr1.age();
|
||||
|
||||
testhdr2.date();
|
||||
testhdr3.lastModified();
|
||||
|
||||
assertTrue("case 1."+id+"."+imd+" date=" + testdatename[id] + " lastmod=" + testdatename[imd] + " AGE= " + age1, age1 >= 0);
|
||||
|
||||
// hint to mismatch of date
|
||||
Date d1 = testhdr1.date();
|
||||
Date m1 = testhdr1.lastModified();
|
||||
if (d1.before(m1)) {
|
||||
System.err.println("this faulty combination with lastmod after date (date="+testdatename[id]+" lastmod="+testdatename[imd]+") is accepted without correction");
|
||||
}
|
||||
|
||||
age2 = testhdr2.age();
|
||||
assertTrue("case 2."+id+"."+imd+" date=" + testdatename[id] + " lastmod=" + testdatename[imd] + " AGE= " + age2, age2 >= 0);
|
||||
|
||||
age3 = testhdr3.age();
|
||||
assertTrue("case 3."+id+"."+imd+" date=" + testdatename[id] + " lastmod=" + testdatename[imd] + " AGE= " + age3, age3 >= 0);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in new issue