// $HeadURL$
// $Id$
//
// Copyright © 2006, 2010, 2011, 2012 by the President and Fellows of Harvard College.
//
// Screensaver is an open-source project developed by the ICCB-L and NSRB labs
// at Harvard Medical School. This software is distributed under the terms of
// the GNU General Public License.
package edu.harvard.med.iccbl.screensaver.service.users;
import junit.framework.TestCase;
import edu.harvard.med.iccbl.screensaver.policy.DataSharingLevelMapper;
import edu.harvard.med.screensaver.model.screens.ScreenDataSharingLevel;
import edu.harvard.med.screensaver.model.screens.ScreenType;
import edu.harvard.med.screensaver.model.users.ScreeningRoomUser;
import edu.harvard.med.screensaver.model.users.ScreensaverUserRole;
public class DataSharingLevelMapperTest extends TestCase
{
public void testDataSharingLevelMapper()
{
doTest(null, ScreenDataSharingLevel.PRIVATE, null, ScreenDataSharingLevel.PRIVATE);
doTest(ScreensaverUserRole.SM_DSL_LEVEL3_SHARED_SCREENS, ScreenDataSharingLevel.PRIVATE, null, ScreenDataSharingLevel.PRIVATE);
doTest(ScreensaverUserRole.SM_DSL_LEVEL2_MUTUAL_POSITIVES, ScreenDataSharingLevel.MUTUAL_POSITIVES, null, ScreenDataSharingLevel.PRIVATE);
doTest(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS, null, ScreenDataSharingLevel.PRIVATE);
doTest(null, ScreenDataSharingLevel.PRIVATE, ScreensaverUserRole.RNAI_DSL_LEVEL3_SHARED_SCREENS, ScreenDataSharingLevel.PRIVATE);
doTest(null, ScreenDataSharingLevel.PRIVATE, ScreensaverUserRole.RNAI_DSL_LEVEL2_MUTUAL_POSITIVES, ScreenDataSharingLevel.MUTUAL_POSITIVES);
doTest(null, ScreenDataSharingLevel.PRIVATE, ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS);
doTest(ScreensaverUserRole.SM_DSL_LEVEL3_SHARED_SCREENS, ScreenDataSharingLevel.PRIVATE, ScreensaverUserRole.RNAI_DSL_LEVEL3_SHARED_SCREENS, ScreenDataSharingLevel.PRIVATE);
doTest(ScreensaverUserRole.SM_DSL_LEVEL2_MUTUAL_POSITIVES, ScreenDataSharingLevel.MUTUAL_POSITIVES, ScreensaverUserRole.RNAI_DSL_LEVEL2_MUTUAL_POSITIVES, ScreenDataSharingLevel.MUTUAL_POSITIVES);
doTest(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS, ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS);
doTest(ScreensaverUserRole.SM_DSL_LEVEL3_SHARED_SCREENS, ScreenDataSharingLevel.PRIVATE, ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS);
doTest(ScreensaverUserRole.SM_DSL_LEVEL2_MUTUAL_POSITIVES, ScreenDataSharingLevel.MUTUAL_POSITIVES, ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS);
doTest(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS, ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS);
doTest(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS, ScreensaverUserRole.RNAI_DSL_LEVEL3_SHARED_SCREENS, ScreenDataSharingLevel.PRIVATE);
doTest(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS, ScreensaverUserRole.RNAI_DSL_LEVEL2_MUTUAL_POSITIVES, ScreenDataSharingLevel.MUTUAL_POSITIVES);
doTest(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS, ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, ScreenDataSharingLevel.MUTUAL_SCREENS);
}
private void doTest(ScreensaverUserRole smDslRole, ScreenDataSharingLevel expectedSmScreenDsl,
ScreensaverUserRole rnaiDslRole, ScreenDataSharingLevel expectedRnaiScreenDsl)
{
ScreeningRoomUser user = new ScreeningRoomUser("Test", "Screener");
assert user.getScreensaverUserRoles().isEmpty();
if (smDslRole != null) {
user.addScreensaverUserRole(smDslRole);
}
if (rnaiDslRole != null) {
user.addScreensaverUserRole(rnaiDslRole);
}
assertEquals(expectedSmScreenDsl, DataSharingLevelMapper.getScreenDataSharingLevelForUser(ScreenType.SMALL_MOLECULE, user));
assertEquals(expectedRnaiScreenDsl, DataSharingLevelMapper.getScreenDataSharingLevelForUser(ScreenType.RNAI, user));
}
public void testUserDataSharingLevelForScreenTypeAndLevel()
{
assertEquals(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, DataSharingLevelMapper.getUserDslRoleForScreenTypeAndLevel(ScreenType.SMALL_MOLECULE, 1));
assertEquals(ScreensaverUserRole.SM_DSL_LEVEL2_MUTUAL_POSITIVES, DataSharingLevelMapper.getUserDslRoleForScreenTypeAndLevel(ScreenType.SMALL_MOLECULE, 2));
assertEquals(ScreensaverUserRole.SM_DSL_LEVEL3_SHARED_SCREENS, DataSharingLevelMapper.getUserDslRoleForScreenTypeAndLevel(ScreenType.SMALL_MOLECULE, 3));
assertEquals(ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, DataSharingLevelMapper.getUserDslRoleForScreenTypeAndLevel(ScreenType.RNAI, 1));
assertEquals(ScreensaverUserRole.RNAI_DSL_LEVEL2_MUTUAL_POSITIVES, DataSharingLevelMapper.getUserDslRoleForScreenTypeAndLevel(ScreenType.RNAI, 2));
assertEquals(ScreensaverUserRole.RNAI_DSL_LEVEL3_SHARED_SCREENS, DataSharingLevelMapper.getUserDslRoleForScreenTypeAndLevel(ScreenType.RNAI, 3));
}
public void testPrimaryDataSharingLevelRoleForUser()
{
ScreeningRoomUser user = new ScreeningRoomUser("Test", "Screener");
assertNull(DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.SMALL_MOLECULE, user));
assertNull(DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.RNAI, user));
user.addScreensaverUserRole(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS);
user.addScreensaverUserRole(ScreensaverUserRole.RNAI_DSL_LEVEL3_SHARED_SCREENS);
assertEquals(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.SMALL_MOLECULE, user));
assertEquals(ScreensaverUserRole.RNAI_DSL_LEVEL3_SHARED_SCREENS, DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.RNAI, user));
user.addScreensaverUserRole(ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS);
assertEquals(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS, DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.SMALL_MOLECULE, user));
assertEquals(ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.RNAI, user));
user.removeScreensaverUserRole(ScreensaverUserRole.SM_DSL_LEVEL1_MUTUAL_SCREENS);
user.addScreensaverUserRole(ScreensaverUserRole.SM_DSL_LEVEL2_MUTUAL_POSITIVES);
assertEquals(ScreensaverUserRole.SM_DSL_LEVEL2_MUTUAL_POSITIVES, DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.SMALL_MOLECULE, user));
assertEquals(ScreensaverUserRole.RNAI_DSL_LEVEL1_MUTUAL_SCREENS, DataSharingLevelMapper.getPrimaryDataSharingLevelRoleForUser(ScreenType.RNAI, user));
}
}