/** * Mad-Advertisement * Copyright (C) 2011 Thorsten Marx <thmarx@gmx.net> * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU General Public License as published by the Free Software * Foundation, either version 3 of the License, or (at your option) any later * version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see <http://www.gnu.org/licenses/>. */ package net.mad.ads.server.utils.selection.impl; import static org.junit.Assert.*; import static org.mockito.Mockito.*; import java.util.ArrayList; import java.util.Date; import java.util.List; import net.mad.ads.base.api.BaseContext; import net.mad.ads.base.api.exception.ServiceException; import net.mad.ads.base.api.track.Criterion; import net.mad.ads.base.api.track.TrackingService; import net.mad.ads.base.api.track.events.EventType; import net.mad.ads.base.api.track.events.TrackEvent; import net.mad.ads.db.definition.BannerDefinition; import net.mad.ads.db.definition.condition.ViewExpirationConditionDefinition; import net.mad.ads.db.definition.impl.banner.image.ImageBannerDefinition; import net.mad.ads.db.enums.ConditionDefinitions; import net.mad.ads.db.enums.ExpirationResolution; import net.mad.ads.server.utils.RuntimeContext; import org.junit.BeforeClass; import org.junit.Test; public class ImpressionPercentageSingleBannerSelectorTest { private static ImpressionPercentageSingleBannerSelector SELECTOR = new ImpressionPercentageSingleBannerSelector(); private static List<BannerDefinition> banners = new ArrayList<BannerDefinition>(); @BeforeClass public static void setUpBeforeClass() throws Exception { RuntimeContext.setTrackService(new TrackingService() { @Override public void track(TrackEvent event) throws ServiceException {} @Override public void open(BaseContext context) throws ServiceException {} @Override public List<TrackEvent> list(Criterion criterion, EventType type, Date from, Date to) throws ServiceException { return null; } @Override public void delete(Criterion criterion, Date from, Date to) throws ServiceException {} @Override public void close() throws ServiceException {} @Override public void clear(Criterion criterion) throws ServiceException {} @Override public long count(Criterion criterion, EventType type, Date from, Date to) throws ServiceException { String bannerID = criterion.value; if (bannerID.equals("1")) { return 10; } else if (bannerID.equals("2")) { return 20; } else if (bannerID.equals("3")) { return 30; } else if (bannerID.equals("4")) { return 40; } else if (bannerID.equals("5")) { return 40; } return 0; } }); for (int i = 1; i <= 4; i++) { BannerDefinition b = new ImageBannerDefinition(); b.setId("" + i); ViewExpirationConditionDefinition vdef = new ViewExpirationConditionDefinition(); vdef.getViewExpirations().put(ExpirationResolution.DAY, 100); b.addConditionDefinition(ConditionDefinitions.VIEW_EXPIRATION, vdef); banners.add(b); } BannerDefinition b = new ImageBannerDefinition(); b.setId("5"); banners.add(b); } @Test public void testSelectBanner() { BannerDefinition b = SELECTOR.selectBanner(banners, null); assertTrue("wrong banner selected", (b.getId().equals("1") || b.getId().equals("5"))); } }