src/test/TestItemSubtype.java

Code
Comments
Other
Rev Date Author Line
5630 13 May 11 nicklas 1 /*
5630 13 May 11 nicklas 2   $Id$
5630 13 May 11 nicklas 3
5630 13 May 11 nicklas 4   Copyright (C) 2005 Nicklas Nordborg
5630 13 May 11 nicklas 5   Copyright (C) 2006 Jari Häkkinen, Nicklas Nordborg
5630 13 May 11 nicklas 6
5630 13 May 11 nicklas 7   This file is part of BASE - BioArray Software Environment.
5630 13 May 11 nicklas 8   Available at http://base.thep.lu.se/
5630 13 May 11 nicklas 9
5630 13 May 11 nicklas 10   BASE is free software; you can redistribute it and/or
5630 13 May 11 nicklas 11   modify it under the terms of the GNU General Public License
5630 13 May 11 nicklas 12   as published by the Free Software Foundation; either version 3
5630 13 May 11 nicklas 13   of the License, or (at your option) any later version.
5630 13 May 11 nicklas 14
5630 13 May 11 nicklas 15   BASE is distributed in the hope that it will be useful,
5630 13 May 11 nicklas 16   but WITHOUT ANY WARRANTY; without even the implied warranty of
5630 13 May 11 nicklas 17   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
5630 13 May 11 nicklas 18   GNU General Public License for more details.
5630 13 May 11 nicklas 19
5630 13 May 11 nicklas 20   You should have received a copy of the GNU General Public License
5630 13 May 11 nicklas 21   along with BASE. If not, see <http://www.gnu.org/licenses/>.
5630 13 May 11 nicklas 22 */
5630 13 May 11 nicklas 23 import net.sf.basedb.core.*;
5630 13 May 11 nicklas 24
5630 13 May 11 nicklas 25 import java.util.Date;
5630 13 May 11 nicklas 26 import java.util.Set;
5630 13 May 11 nicklas 27
5630 13 May 11 nicklas 28 public class TestItemSubtype
5630 13 May 11 nicklas 29 {
5630 13 May 11 nicklas 30
5630 13 May 11 nicklas 31   static boolean ok = true;
5630 13 May 11 nicklas 32   public static void main(String[] args)
5630 13 May 11 nicklas 33   {
5630 13 May 11 nicklas 34     TestUtil.checkArgs(args);
5630 13 May 11 nicklas 35     TestUtil.begin();
5630 13 May 11 nicklas 36     ok = test_all();
5630 13 May 11 nicklas 37     TestUtil.stop();
5630 13 May 11 nicklas 38   }
5630 13 May 11 nicklas 39
5630 13 May 11 nicklas 40   static boolean test_all()
5630 13 May 11 nicklas 41   {
5630 13 May 11 nicklas 42     write("++Testing item subtypes");
5630 13 May 11 nicklas 43     write_header();
5630 13 May 11 nicklas 44     // Standard tests: create, load, list
5630 13 May 11 nicklas 45     int id = test_create(Item.EXTRACT, "Test labeled extract");
5630 13 May 11 nicklas 46     int id2 = test_create(Item.EXTRACT, "Test library");
5630 13 May 11 nicklas 47     test_load(id);
5630 13 May 11 nicklas 48     test_list(-1);
5630 13 May 11 nicklas 49
5630 13 May 11 nicklas 50     // Extra tests:
5641 25 May 11 nicklas 51     int extractId = TestExtract.test_create(0, "Test extract", 0, 0, true);
5630 13 May 11 nicklas 52     test_set_on_item(id, extractId);
5630 13 May 11 nicklas 53
5630 13 May 11 nicklas 54     // Standard test: Delete
5630 13 May 11 nicklas 55     if (TestUtil.waitBeforeDelete()) TestUtil.waitForEnter();
5630 13 May 11 nicklas 56     TestExtract.test_delete(extractId);
5630 13 May 11 nicklas 57     test_delete(id);
5630 13 May 11 nicklas 58     test_delete(id2);
5630 13 May 11 nicklas 59     write("++Testing item subtypes "+(ok ? "OK" : "Failed")+"\n");
5630 13 May 11 nicklas 60     return ok;
5630 13 May 11 nicklas 61   }
5630 13 May 11 nicklas 62
5696 12 Aug 11 nicklas 63   static int test_create(Item itemType, String name, int... relatedSubtypes)
5630 13 May 11 nicklas 64   {
5630 13 May 11 nicklas 65     if (!TestUtil.hasPermission(Permission.CREATE, Item.ITEMSUBTYPE)) return 0;
5630 13 May 11 nicklas 66     int id = 0;
5630 13 May 11 nicklas 67     DbControl dc = null;
5630 13 May 11 nicklas 68     try
5630 13 May 11 nicklas 69     {
5630 13 May 11 nicklas 70       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 71       
5630 13 May 11 nicklas 72       ItemSubtype subtype = ItemSubtype.getNew(dc, itemType);
5630 13 May 11 nicklas 73       subtype.setName(name);
5630 13 May 11 nicklas 74       subtype.setDescription("Added at "+new Date());
5696 12 Aug 11 nicklas 75       if (relatedSubtypes != null)
5696 12 Aug 11 nicklas 76       {
5696 12 Aug 11 nicklas 77         for (int i = 0; i < relatedSubtypes.length; ++i)
5696 12 Aug 11 nicklas 78         {
5696 12 Aug 11 nicklas 79           subtype.setRelatedSubtype(ItemSubtype.getById(dc, relatedSubtypes[i]));
5696 12 Aug 11 nicklas 80         }
5696 12 Aug 11 nicklas 81       }
5630 13 May 11 nicklas 82       dc.saveItem(subtype);
5630 13 May 11 nicklas 83       dc.commit();
5630 13 May 11 nicklas 84       id = subtype.getId();
5630 13 May 11 nicklas 85       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 86       dc.reattachItem(subtype, false);
5630 13 May 11 nicklas 87       write_item(0, subtype);
5630 13 May 11 nicklas 88       write("--Create item subtype OK");
5630 13 May 11 nicklas 89     }
5630 13 May 11 nicklas 90     catch (Throwable ex)
5630 13 May 11 nicklas 91     {
5630 13 May 11 nicklas 92       write("--Create item subtype FAILED");
5630 13 May 11 nicklas 93       ex.printStackTrace();
5630 13 May 11 nicklas 94       ok = false;
5630 13 May 11 nicklas 95     }
5630 13 May 11 nicklas 96     finally
5630 13 May 11 nicklas 97     {
5630 13 May 11 nicklas 98       if (dc != null) dc.close();
5630 13 May 11 nicklas 99     }
5630 13 May 11 nicklas 100     return id;
5630 13 May 11 nicklas 101   }
5630 13 May 11 nicklas 102
5630 13 May 11 nicklas 103   static void test_load(int id)
5630 13 May 11 nicklas 104   {
5630 13 May 11 nicklas 105     if (id == 0) return;
5630 13 May 11 nicklas 106     DbControl dc = null;
5630 13 May 11 nicklas 107     try
5630 13 May 11 nicklas 108     {
5630 13 May 11 nicklas 109       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 110       ItemSubtype subtype  = ItemSubtype.getById(dc, id);
5630 13 May 11 nicklas 111       write_item(0, subtype);
5630 13 May 11 nicklas 112       write("--Load item subtype OK");
5630 13 May 11 nicklas 113     }
5630 13 May 11 nicklas 114     catch (Throwable ex)
5630 13 May 11 nicklas 115     {
5630 13 May 11 nicklas 116       write("--Load item subtype FAILED");
5630 13 May 11 nicklas 117       ex.printStackTrace();
5630 13 May 11 nicklas 118       ok = false;
5630 13 May 11 nicklas 119     }
5630 13 May 11 nicklas 120     finally
5630 13 May 11 nicklas 121     {
5630 13 May 11 nicklas 122       if (dc != null) dc.close();
5630 13 May 11 nicklas 123     }
5630 13 May 11 nicklas 124   }
5630 13 May 11 nicklas 125
5630 13 May 11 nicklas 126   static void test_list(int expectedResults)
5630 13 May 11 nicklas 127   {
5630 13 May 11 nicklas 128     DbControl dc = null;
5630 13 May 11 nicklas 129     try
5630 13 May 11 nicklas 130     {
5630 13 May 11 nicklas 131       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 132       ItemResultList<ItemSubtype> l = ItemSubtype.getQuery(null).list(dc);
5630 13 May 11 nicklas 133       for (int i = 0; i<l.size(); i++)
5630 13 May 11 nicklas 134       {
5630 13 May 11 nicklas 135         write_item(i, l.get(i));
5630 13 May 11 nicklas 136       }
5630 13 May 11 nicklas 137       if (expectedResults >= 0 && expectedResults != l.size())
5630 13 May 11 nicklas 138       {
5630 13 May 11 nicklas 139         throw new BaseException("Expected "+expectedResults+" results, not "+l.size());
5630 13 May 11 nicklas 140       }
5630 13 May 11 nicklas 141       write("--List item subtypes OK ("+l.size()+")");
5630 13 May 11 nicklas 142     }
5630 13 May 11 nicklas 143     catch (Throwable ex)
5630 13 May 11 nicklas 144     {
5630 13 May 11 nicklas 145       write("--List item subtypes FAILED");
5630 13 May 11 nicklas 146       ex.printStackTrace();
5630 13 May 11 nicklas 147       ok = false;
5630 13 May 11 nicklas 148     }
5630 13 May 11 nicklas 149     finally
5630 13 May 11 nicklas 150     {
5630 13 May 11 nicklas 151       if (dc != null) dc.close();
5630 13 May 11 nicklas 152     }
5630 13 May 11 nicklas 153   }
5630 13 May 11 nicklas 154
5630 13 May 11 nicklas 155   static void test_delete(int id)
5630 13 May 11 nicklas 156   {
5630 13 May 11 nicklas 157     if (id == 0) return;
5630 13 May 11 nicklas 158     DbControl dc = null;
5630 13 May 11 nicklas 159     try
5630 13 May 11 nicklas 160     {
5630 13 May 11 nicklas 161       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 162       ItemSubtype subtype = ItemSubtype.getById(dc, id);
5630 13 May 11 nicklas 163       dc.deleteItem(subtype);
5630 13 May 11 nicklas 164       Set<ItemProxy> using = subtype.getUsingItems();
5630 13 May 11 nicklas 165       if (using.size() > 0) 
5630 13 May 11 nicklas 166       {
5630 13 May 11 nicklas 167          throw new BaseException(subtype + " is used by " + using);
5630 13 May 11 nicklas 168       }
5630 13 May 11 nicklas 169       dc.commit();
5630 13 May 11 nicklas 170       write("--Delete item subtype OK");
5630 13 May 11 nicklas 171     }
5630 13 May 11 nicklas 172     catch (Throwable ex)
5630 13 May 11 nicklas 173     {
5630 13 May 11 nicklas 174       write("--Delete item subtype FAILED");
5630 13 May 11 nicklas 175       ex.printStackTrace();
5630 13 May 11 nicklas 176       ok = false;
5630 13 May 11 nicklas 177     }
5630 13 May 11 nicklas 178     finally
5630 13 May 11 nicklas 179     {
5630 13 May 11 nicklas 180       if (dc != null) dc.close();
5630 13 May 11 nicklas 181     }
5630 13 May 11 nicklas 182   }
5630 13 May 11 nicklas 183
5630 13 May 11 nicklas 184   static void write_header()
5630 13 May 11 nicklas 185   {
5630 13 May 11 nicklas 186     if (!TestUtil.getSilent())
5630 13 May 11 nicklas 187     {
5630 13 May 11 nicklas 188       write("   \tID \tName      \tItem type\tDescription");
5630 13 May 11 nicklas 189       write("-- \t-- \t--------- \t---------\t-----------");
5630 13 May 11 nicklas 190     }
5630 13 May 11 nicklas 191   }
5630 13 May 11 nicklas 192   static void write_item(int i, ItemSubtype subtype)
5630 13 May 11 nicklas 193     throws BaseException
5630 13 May 11 nicklas 194   {
5630 13 May 11 nicklas 195     if (!TestUtil.getSilent()) 
5630 13 May 11 nicklas 196     {
5630 13 May 11 nicklas 197       System.out.println(i+":\t"+subtype.getId()+"\t"+subtype.getName()+"\t" + subtype.getMainItemType() +
5630 13 May 11 nicklas 198           "\t"+subtype.getDescription());
5630 13 May 11 nicklas 199     }
5630 13 May 11 nicklas 200   }
5630 13 May 11 nicklas 201   static void write(String message)
5630 13 May 11 nicklas 202   {
5630 13 May 11 nicklas 203     System.out.println(message);
5630 13 May 11 nicklas 204   }
5630 13 May 11 nicklas 205
5630 13 May 11 nicklas 206
5630 13 May 11 nicklas 207   static void test_set_on_item(int subtypeId, int itemId)
5630 13 May 11 nicklas 208   {
5630 13 May 11 nicklas 209     if (subtypeId == 0 || itemId == 0) return;
5630 13 May 11 nicklas 210     DbControl dc = null;
5630 13 May 11 nicklas 211     try
5630 13 May 11 nicklas 212     {
5630 13 May 11 nicklas 213       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 214       ItemSubtype subtype  = ItemSubtype.getById(dc, subtypeId);
5630 13 May 11 nicklas 215       Subtypable item = (Subtypable)subtype.getMainItemType().getById(dc, itemId);
5630 13 May 11 nicklas 216       item.setItemSubtype(subtype);
5630 13 May 11 nicklas 217       dc.commit();
5630 13 May 11 nicklas 218       dc = TestUtil.getDbControl();
5630 13 May 11 nicklas 219       item = (Subtypable)item.getType().getById(dc, itemId);
5630 13 May 11 nicklas 220       if (!TestUtil.getSilent())
5630 13 May 11 nicklas 221       {
5630 13 May 11 nicklas 222         write("--" + item + "; subtype=" + item.getItemSubtype());
5630 13 May 11 nicklas 223       }
5630 13 May 11 nicklas 224       write("--Set item subtype OK");
5630 13 May 11 nicklas 225     }
5630 13 May 11 nicklas 226     catch (Throwable ex)
5630 13 May 11 nicklas 227     {
5630 13 May 11 nicklas 228       write("--Set item subtype FAILED");
5630 13 May 11 nicklas 229       ex.printStackTrace();
5630 13 May 11 nicklas 230       ok = false;
5630 13 May 11 nicklas 231     }
5630 13 May 11 nicklas 232     finally
5630 13 May 11 nicklas 233     {
5630 13 May 11 nicklas 234       if (dc != null) dc.close();
5630 13 May 11 nicklas 235     }
5630 13 May 11 nicklas 236     
5630 13 May 11 nicklas 237   }
5630 13 May 11 nicklas 238
5630 13 May 11 nicklas 239
5630 13 May 11 nicklas 240 }
5630 13 May 11 nicklas 241