blob: 29c5e039a3ff5c898cacc0860f6888ef5be7feb2 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.ignite.lang;
import java.util.concurrent.Callable;
import org.apache.ignite.internal.util.lang.GridMetadataAwareAdapter;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.apache.ignite.testframework.junits.common.GridCommonTest;
import org.junit.Test;
/**
*
*/
@GridCommonTest(group = "Lang")
public class GridMetadataAwareAdapterSelfTest extends GridCommonAbstractTest {
/** Creates test. */
public GridMetadataAwareAdapterSelfTest() {
super(/*start grid*/false);
}
/**
* Junit.
*/
@SuppressWarnings({"AssertWithSideEffects"})
@Test
public void test() {
GridMetadataAwareAdapter ma = new GridMetadataAwareAdapter();
int cnt = 0;
int attr1 = cnt++;
int attr2 = cnt++;
int attr3 = cnt++;
int attr4 = cnt++;
int attr156 = cnt++;
int k1 = cnt++;
int k2 = cnt++;
int k3 = cnt++;
int a1 = cnt++;
int a2 = cnt++;
int a3 = cnt;
// addMeta(name, val).
assert ma.addMeta(attr1, "val1") == null;
assert ma.addMeta(attr2, 1) == null;
// hasMeta(name).
assert ma.hasMeta(attr1);
assert !ma.hasMeta(attr3);
// hasMeta(name, val).
assert ma.hasMeta(attr1, "val1");
assert !ma.hasMeta(attr1, "some another val");
// meta(name).
assertEquals("val1", ma.meta(attr1));
assertEquals(new Integer(1), ma.meta(attr2));
// allMeta().
Object[] allMeta = ma.allMeta();
assert allMeta != null;
assertEquals("val1", allMeta[attr1]);
assertEquals(1, allMeta[attr2]);
// addMetaIfAbsent(name, val).
assert ma.addMetaIfAbsent(attr2, 2) == 1;
assert ma.addMetaIfAbsent(attr3, 3) == 3;
// addMetaIfAbsent(name, c).
assert ma.addMetaIfAbsent(attr2, new Callable<Integer>() {
@Override public Integer call() throws Exception {
return 5;
}
}) == 1;
assert ma.addMetaIfAbsent(attr4, new Callable<Integer>() {
@Override public Integer call() throws Exception {
return 5;
}
}) == 5;
// removeMeta(name).
assertEquals(new Integer(3), ma.removeMeta(attr3));
assertEquals(new Integer(5), ma.removeMeta(attr4));
assert ma.removeMeta(attr156) == null;
// replaceMeta(name, newVal, curVal).
assert !ma.replaceMeta(attr2, 5, 4);
assert ma.replaceMeta(attr2, 1, 4);
// copyMeta(from).
GridMetadataAwareAdapter adapter = new GridMetadataAwareAdapter();
adapter.addMeta(k1, "v1");
adapter.addMeta(k2, 2);
ma.copyMeta(adapter);
allMeta = ma.allMeta();
assertEquals("v1", ma.meta(k1));
assertEquals(new Integer(2), ma.meta(k2));
assertEquals("val1", allMeta[attr1]);
assertEquals(4, allMeta[attr2]);
assert !ma.hasMeta(k3);
// copyMeta(from).
Object[] objs = new Object[20];
objs[a1] = 1;
objs[a2] = 2;
objs[19] = 19;
ma.copyMeta(objs);
assertEquals(new Integer(1), ma.meta(a1));
assertEquals(new Integer(2), ma.meta(a2));
assertEquals("v1", ma.meta(k1));
assertEquals(new Integer(2), ma.meta(k2));
assertEquals("val1", allMeta[attr1]);
assertEquals(4, allMeta[attr2]);
assertEquals(19, 19);
assert !ma.hasMeta(a3);
}
}