@@ -1214,6 +1214,115 @@ public void onNext(Inference i) {
12141214 e .printStackTrace ();
12151215 }
12161216 }
1217+
1218+ @ Test
1219+ public void testMissingEncoderMap () {
1220+ Parameters p = NetworkTestHarness .getParameters ().copy ();
1221+ //p = p.union(NetworkTestHarness.getHotGymTestEncoderParams());
1222+ p .setParameterByKey (KEY .RANDOM , new MersenneTwister (42 ));
1223+ p .setParameterByKey (KEY .COLUMN_DIMENSIONS , new int [] { 2048 });
1224+ p .setParameterByKey (KEY .POTENTIAL_RADIUS , 200 );
1225+ p .setParameterByKey (KEY .INHIBITION_RADIUS , 50 );
1226+ p .setParameterByKey (KEY .GLOBAL_INHIBITIONS , true );
1227+
1228+ // System.out.println(p);
1229+
1230+ Map <String , Object > params = new HashMap <>();
1231+ params .put (KEY_MODE , Mode .PURE );
1232+ params .put (KEY_WINDOW_SIZE , 3 );
1233+ params .put (KEY_USE_MOVING_AVG , true );
1234+ Anomaly anomalyComputer = Anomaly .create (params );
1235+
1236+ Layer <?> l = Network .createLayer ("TestLayer" , p )
1237+ .alterParameter (KEY .AUTO_CLASSIFY , true )
1238+ .add (anomalyComputer )
1239+ .add (new TemporalMemory ())
1240+ .add (new SpatialPooler ())
1241+ .add (Sensor .create (
1242+ FileSensor ::create ,
1243+ SensorParams .create (
1244+ Keys ::path , "" , ResourceLocator .path ("rec-center-hourly-small.csv" ))));
1245+
1246+ l .getConnections ().printParameters ();
1247+
1248+ l .subscribe (new Observer <Inference >() {
1249+ @ Override public void onCompleted () {}
1250+ @ Override public void onError (Throwable e ) { System .out .println ("error: " + e .getMessage ()); e .printStackTrace ();}
1251+ @ Override
1252+ public void onNext (Inference i ) {
1253+ if (flowReceived ) return ; // No need to set this value multiple times
1254+
1255+ flowReceived = i .getClassifiers ().size () == 4 &&
1256+ i .getClassifiers ().get ("timestamp" ) != null &&
1257+ i .getClassifiers ().get ("consumption" ) != null ;
1258+ }
1259+ });
1260+
1261+ try {
1262+ l .close ();
1263+ fail ();
1264+ }catch (Exception e ) {
1265+ assertEquals ("Cannot initialize this Sensor's MultiEncoder with a null settings" , e .getMessage ());
1266+ }
1267+
1268+ try {
1269+ assertFalse (flowReceived );
1270+ }catch (Exception e ) {
1271+ e .printStackTrace ();
1272+ }
1273+
1274+ ////////////////// Test catch with no Sensor ////////////////////
1275+
1276+ p = NetworkTestHarness .getParameters ().copy ();
1277+ //p = p.union(NetworkTestHarness.getHotGymTestEncoderParams());
1278+ p .setParameterByKey (KEY .RANDOM , new MersenneTwister (42 ));
1279+ p .setParameterByKey (KEY .COLUMN_DIMENSIONS , new int [] { 2048 });
1280+ p .setParameterByKey (KEY .POTENTIAL_RADIUS , 200 );
1281+ p .setParameterByKey (KEY .INHIBITION_RADIUS , 50 );
1282+ p .setParameterByKey (KEY .GLOBAL_INHIBITIONS , true );
1283+
1284+ params = new HashMap <>();
1285+ params .put (KEY_MODE , Mode .PURE );
1286+ params .put (KEY_WINDOW_SIZE , 3 );
1287+ params .put (KEY_USE_MOVING_AVG , true );
1288+ anomalyComputer = Anomaly .create (params );
1289+
1290+ l = Network .createLayer ("TestLayer" , p )
1291+ .alterParameter (KEY .AUTO_CLASSIFY , true )
1292+ .add (anomalyComputer )
1293+ .add (new TemporalMemory ())
1294+ .add (new SpatialPooler ())
1295+ .add (anomalyComputer )
1296+ .add (MultiEncoder .builder ().name ("" ).build ());
1297+
1298+ l .getConnections ().printParameters ();
1299+
1300+ l .subscribe (new Observer <Inference >() {
1301+ @ Override public void onCompleted () {}
1302+ @ Override public void onError (Throwable e ) { System .out .println ("error: " + e .getMessage ()); e .printStackTrace ();}
1303+ @ Override
1304+ public void onNext (Inference i ) {
1305+ if (flowReceived ) return ; // No need to set this value multiple times
1306+
1307+ flowReceived = i .getClassifiers ().size () == 4 &&
1308+ i .getClassifiers ().get ("timestamp" ) != null &&
1309+ i .getClassifiers ().get ("consumption" ) != null ;
1310+ }
1311+ });
1312+
1313+ try {
1314+ l .close ();
1315+ fail ();
1316+ }catch (Exception e ) {
1317+ assertEquals ("No field encoding map found for specified MultiEncoder" , e .getMessage ());
1318+ }
1319+
1320+ try {
1321+ assertFalse (flowReceived );
1322+ }catch (Exception e ) {
1323+ e .printStackTrace ();
1324+ }
1325+ }
12171326
12181327 private Parameters getArrayTestParams () {
12191328 Map <String , Map <String , Object >> fieldEncodings = setupMap (
0 commit comments